<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                #### 8.1 創建消息隊列 首先,處理消息隊列的部分,我們應該集成到`MsgHandler`模塊下,因為屬于我們消息模塊范疇內的 > zinx/znet/msghandler.go ```go type MsgHandle struct { Apis map[uint32]ziface.IRouter //存放每個MsgId 所對應的處理方法的map屬性 WorkerPoolSize uint32 //業務工作Worker池的數量 TaskQueue []chan ziface.IRequest //Worker負責取任務的消息隊列 } func NewMsgHandle() *MsgHandle { return &MsgHandle{ Apis: make(map[uint32]ziface.IRouter), WorkerPoolSize:utils.GlobalObject.WorkerPoolSize, //一個worker對應一個queue TaskQueue:make([]chan ziface.IRequest, utils.GlobalObject.WorkerPoolSize), } } ``` 這里添加兩個成員 `WokerPoolSize`:作為工作池的數量,因為TaskQueue中的每個隊列應該是和一個Worker對應的,所以我們在創建TaskQueue中隊列數量要和Worker的數量一致。 `TaskQueue`真是一個Request請求信息的channel集合。用來緩沖提供worker調用的Request請求信息,worker會從對應的隊列中獲取客戶端的請求數據并且處理掉。 當然`WorkerPoolSize`最好也可以從`GlobalObject`獲取,并且`zinx.json`配置文件可以手動配置。 > zinx/utils/globalobj.go ```go /* 存儲一切有關Zinx框架的全局參數,供其他模塊使用 一些參數也可以通過 用戶根據 zinx.json來配置 */ type GlobalObj struct { /* Server */ TcpServer ziface.IServer //當前Zinx的全局Server對象 Host string //當前服務器主機IP TcpPort int //當前服務器主機監聽端口號 Name string //當前服務器名稱 /* Zinx */ Version string //當前Zinx版本號 MaxPacketSize uint32 //都需數據包的最大值 MaxConn int //當前服務器主機允許的最大鏈接個數 WorkerPoolSize uint32 //業務工作Worker池的數量 MaxWorkerTaskLen uint32 //業務工作Worker對應負責的任務隊列最大任務存儲數量 /* config file path */ ConfFilePath string } //... //... /* 提供init方法,默認加載 */ func init() { //初始化GlobalObject變量,設置一些默認值 GlobalObject = &GlobalObj{ Name: "ZinxServerApp", Version: "V0.4", TcpPort: 7777, Host: "0.0.0.0", MaxConn: 12000, MaxPacketSize: 4096, ConfFilePath: "conf/zinx.json", WorkerPoolSize: 10, MaxWorkerTaskLen: 1024, } //從配置文件中加載一些用戶配置的參數 GlobalObject.Reload() } ```
                  <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>

                              哎呀哎呀视频在线观看