<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 思考 場景:有100W個 socket連接需要處理。 思考: - linux下 socke連接抽象成了文件(100W個文件句柄) - 系統其實就是在不斷檢查100W個文件中有沒有數據到來 - 100W個 socket并發很高要,稍有不慎,就造成系統雪崩 ## 解決辦法 ### 阻塞 I/O(不推薦) 開啟100w個線程 ``` while(read(sockets[i])){ // do something slepp(1) } ``` ### 多路復用(方案一,單也不推薦) 把100w個鏈接分成1000組,只需要1000個線程 ### select/poll ``` for(fd:fds){ if(somethingln{(fd)){ read() } } ``` 圖示: ![](https://img.kancloud.cn/b7/4b/b74baf2af62d61cc9d8ba2aaebdd9493_400x304.png) select/pol模型是同步還是異步? - select/po發生后,交由內核執行,直到有接收數據的通知出現。因此是異步模型。 selec/pol型是阻塞還是非阻塞? - select/pol發生后,線程會被阻塞(進入阻塞狀態),因此是阻塞模型。 ### epoll #### 處理 100w 數據量-insert,delete,find 既然允許增加操作內核中的fd,那么如何確保所有操作insert find. delete都在o(1) - 數組: insert~O(m),find~O(n), delete~O(n) - 鏈表: insert~O(1),find~o(m), delete~O(1) - HashTable:100W數據量(100W整數),效果不好— HashTable適合全集很大,但是抽樣很小的場景 - 平衡的樹(如二叉搜索樹紅黑樹 - insert O(lgn) - delete O(lgn) - find o(lgn) > 使用平衡數進行管理,被稱為 epoll 方案 說明: - 增量向內核傳輸FD(同理,增加刪除FD) - 內核返回事件(而不是FD) - 事件中帶有可以被讀取的FD(避免線程遍歷
                  <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>

                              哎呀哎呀视频在线观看