<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #### 8.2 創建及啟動Worker工作池 現在添加Worker工作池,先定義一些啟動工作池的接口 > zinx/ziface/imsghandler.go ```go /* 消息管理抽象層 */ type IMsgHandle interface{ DoMsgHandler(request IRequest) //馬上以非阻塞方式處理消息 AddRouter(msgId uint32, router IRouter) //為消息添加具體的處理邏輯 StartWorkerPool() //啟動worker工作池 SendMsgToTaskQueue(request IRequest) //將消息交給TaskQueue,由worker進行處理 } ``` > zinx/znet/msghandler.go ```go //啟動一個Worker工作流程 func (mh *MsgHandle) StartOneWorker(workerID int, taskQueue chan ziface.IRequest) { fmt.Println("Worker ID = ", workerID, " is started.") //不斷的等待隊列中的消息 for { select { //有消息則取出隊列的Request,并執行綁定的業務方法 case request := <-taskQueue: mh.DoMsgHandler(request) } } } //啟動worker工作池 func (mh *MsgHandle) StartWorkerPool() { //遍歷需要啟動worker的數量,依此啟動 for i:= 0; i < int(mh.WorkerPoolSize); i++ { //一個worker被啟動 //給當前worker對應的任務隊列開辟空間 mh.TaskQueue[i] = make(chan ziface.IRequest, utils.GlobalObject.MaxWorkerTaskLen) //啟動當前Worker,阻塞的等待對應的任務隊列是否有消息傳遞進來 go mh.StartOneWorker(i, mh.TaskQueue[i]) } } ``` `StartWorkerPool()`方法是啟動Worker工作池,這里根據用戶配置好的`WorkerPoolSize`的數量來啟動,然后分別給每個Worker分配一個`TaskQueue`,然后用一個goroutine來承載一個Worker的工作業務。 `StartOneWorker()`方法就是一個Worker的工作業務,每個worker是不會退出的\(目前沒有設定worker的停止工作機制\),會永久的從對應的TaskQueue中等待消息,并處理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看