<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國際加速解決方案。 廣告
                # Coroutine::getCid [TOC] 獲取當前協程的唯一`ID`, 它的別名為`getUid`, 是一個進程內唯一的正整數 ~~~ function \Swoole\Coroutine::getCid() : int ~~~ > 僅在當前進程內唯一 ## 返回值 * 成功時返回當前協程`ID(int)` * 如果當前不在協程環境中,則返回`-1` ~~~ echo Swoole\Coroutine::getCid(); ~~~ ## cid分配機制 在v4.2.9中, cid分配機制從有限的`cidmap+靜態表`更改為`unordered_map`, 底層的cid改為long類型, 分配方式為自增, 在PHP中最大值為`PHP_INT_MAX`, 在64位機器上其大小為`9223372036854775807`, 幾乎不存在重復的可能性, 可以作為真正的`unique id`而無需考慮cid在進程內的可能重復的問題. ## cid分配機制 (v4.2.8及以下版本) > [相關issue](https://github.com/swoole/swoole-src/issues/1977) > > 如在v4.2.8及以下版本使用cid作為上下文存儲主鍵, 而在協程退出時沒有妥善清除上下文, cid的復用(創建超過52萬個協程后)可能會導致協程上下文錯亂 cid map 使用了 bit map, 它在分配時總是會尋找下一個可用的比特位 我們可以通過以下代碼來確認這個事實: ~~~ co::set([ 'max_coroutine' => PHP_INT_MAX, 'log_level' => SWOOLE_LOG_INFO, 'trace_flags' => 0 ]); $map = []; while (true) { if (empty($map)){ $cid = go(function () {co::sleep(5);}); }else{ $cid = go(function () { }); } if (!isset($map[$cid])) { $map[$cid] = $cid; } else { var_dump(end($map)); var_dump($cid); exit; } } ~~~ 它將會打印: ~~~ int(524288) int(2) ~~~ 所以我們有`MAX_CORO_NUM_LIMIT => 0x80000`則在同一時間同一進程的協程數也不能超過`524288` 雖然它的分配數量存在上限, 但這個數值非常大, 一個進程不可能同時存在這么多協程, 除非你有一臺超大內存的機器, 但那時候你也不必再擔心這個問題
                  <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>

                              哎呀哎呀视频在线观看