zoukankan      html  css  js  c++  java
  • 智能预判 (三:布局加强)

    线程启动项目 修改 在 AppServer 类中,方便管理。

    同时增加心跳,用来同步 数据并 定时批量存储数据库。

            protected override void OnStarted()
            { 
                ThreadPoolMain.OnStartThreadPool();
                OnTimeServer();
                base.OnStarted(); 
            }
    
            //规定时间 检查一次心跳
            public void theout(object source, System.Timers.ElapsedEventArgs e)
            {
               if(ServerModel.getInstance().queue.Count>0)
               {
                   JsonData[] mes = ServerModel.getInstance().queue.Dequeue();
                   //拿到数据,批处理 算出 效益,并存放数据库
                  // Console.WriteLine("检测有没有发送过来 目前用户" + this.SessionCount); 
               }  
            } 
    
            //定时器 作用, 同步 存储数据库 计算收益
            void OnTimeServer()
            {
                System.Timers.Timer t = new System.Timers.Timer(2000);//实例化Timer类,设置间隔时间为10000毫秒;
                t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
                t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
                t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;  
            } 

     线程管理类 负责 推送给 定时器,同时定义数组JsonData[] obj

    负责临时存放 事物,分配给各类线程处理。

            public bool QueueWorkItem(ManualResetEvent eventX, int task)
            {
                //   Console.WriteLine("线程池开始分配任务");
                //定义数组
                JsonData[] obj = new JsonData[task];
    
                ThreadProcClass t = new ThreadProcClass(task, eventX, obj);
                for (int i = 0; i < task; i++)
                {
                    DataTable dt = ServerModel.getInstance().dt;
                    // Console.WriteLine(dt.Rows[i]["id"].ToString() + " == 第1种写法 " + dt.Rows[i]["time"].ToString());//行集合.行【号】列【名】 
    
                    JsonData json = new JsonData();
                    json["task"] = i.ToString();
                    json["id"] = dt.Rows[i]["id"].ToString();
                    json["time"] = dt.Rows[i]["time"].ToString();
                    json["attack"] = dt.Rows[i]["attack"].ToString();
                    json["beaten"] = dt.Rows[i]["beaten"].ToString();
                    json["soldier"] = dt.Rows[i]["soldier"].ToString();
    
                    ThreadPool.QueueUserWorkItem(new WaitCallback(t.ThreadProc), new SomeState(json));
                }
                //等待事件的完成,即线程调用ManualResetEvent.Set()方法
                //eventX.WaitOne  阻止当前线程,直到当前 WaitHandle 收到信号为止。 
                eventX.WaitOne(Timeout.Infinite, true);
                Console.WriteLine("任务结束,数据存放到 list中");
                Console.WriteLine("通知 定时器");
                // 存放到 queue 中
                ServerModel.getInstance().queue.Enqueue(obj);
    
                return true;
            }

    线程中,负责 物理模拟,同时把数据放到传参过来的objs[]中

     objs[task] = json;//保持数组

    本周就先到这里。

  • 相关阅读:
    分类模型之支持向量机
    数据预处理
    数据挖掘基本流程
    【项目】项目95
    【项目】项目94
    【项目】项目93
    【项目】项目92
    【项目】项目91
    【项目】项目90
    【项目】项目89
  • 原文地址:https://www.cnblogs.com/big-zhou/p/5467979.html
Copyright © 2011-2022 走看看