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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Worker進程 --- [TOC=2,3] ## Swoole進程模型 首先,我們需要了解一下Swoole的進程模型。Swoole是一個多進程模式的框架(可以類比Nginx的進程模型),當啟動一個Swoole應用時,一共會創建2 + n + m個進程,其中n為Worker進程數,m為TaskWorker進程數,2為一個Master進程和一個Manager進程,它們之間的關系如下圖所示。 ![structure.png-18kB](http://static.zybuluo.com/Lancelot2014/xpatz2wxco47xrzi5xc3keni/structure.png) 其中,Master進程為主進程,該進程會創建Manager進程、Reactor線程等工作進/線程。 * Reactor線程實際運行epoll實例,用于accept客戶端連接以及接收客戶端數據; * Manager進程為管理進程,該進程的作用是創建、管理所有的Worker進程和TaskWorker進程。 ## Worker進程簡介 Worker進程作為Swoole的工作進程,所有的業務邏輯代碼均在此進程上運行。當Reactor線程接收到來自客戶端的數據后,會將數據打包通過管道發送給某個Worker進程(數據分配方法見[dispatch_mode](http://www.baidu.com))。 ## Worker進程生命周期 一個Worker進程的生命周期如圖所示: <!-- {% flowchart %} st=>start: Create start=>operation: onWorkerStart recv=>operation: onReceive/onConnect/onClose op=>operation: Receive and Handle Data cond=>condition: Max Request or Error stop=>operation: onWorkerStop e=>end: Stop st->start->recv->op->cond cond(yes)->stop cond(no)->recv stop->e {% endflowchart %} --> 當一個Worker進程被成功創建后,會調用`onWorkerStart`回調,隨后進入事件循環等待數據。當通過回調函數接收到數據后,開始處理數據。如果處理數據過程中出現嚴重錯誤導致進程退出,或者Worker進程處理的總請求數達到指定上限,則Worker進程調用`onWorkerStop`回調并結束進程。
                  <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>

                              哎呀哎呀视频在线观看