<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 協程:實現 sync.WaitGroup 功能 [TOC] 在`Swoole4`中可以使用`channel`實現協程間的通信、依賴管理、協程同步。基于`channel`可以很容易地實現`Golang`的`sync.WaitGrup`功能。 ## 實現代碼 ~~~ class WaitGroup { private $count = 0; private $chan; /** * waitgroup constructor. * @desc 初始化一個channel */ public function __construct() { $this->chan = new chan; } public function add() { $this->count++; } public function done() { $this->chan->push(true); } public function wait() { while($this->count--) { $this->chan->pop(); } } } ~~~ * `add`方法增加計數 * `done`表示任務已完成 * `wait`等待所有任務完成恢復當前協程的執行 * `WaitGroup`對象可以復用,`add`、`done`、`wait`之后可以再次使用 ## 使用實例 ~~~ go(function () { $wg = new waitgroup(); $result = []; $wg->add(); //啟動第一個協程 go(function () use ($wg, &amp;$result) { //啟動一個協程客戶端client,請求淘寶首頁 $cli = new Client('www.taobao.com', 443, true); $cli->setHeaders([ 'Host' => "www.taobao.com", "User-Agent" => 'Chrome/49.0.2587.3', 'Accept' => 'text/html,application/xhtml+xml,application/xml', 'Accept-Encoding' => 'gzip', ]); $cli->set(['timeout' => 1]); $cli->get('/index.php'); $result['taobao'] = $cli->body; $cli->close(); $wg->done(); }); $wg->add(); //啟動第二個協程 go(function () use ($wg, &amp;$result) { //啟動一個協程客戶端client,請求百度首頁 $cli = new Client('www.baidu.com', 443, true); $cli->setHeaders([ 'Host' => "www.baidu.com", "User-Agent" => 'Chrome/49.0.2587.3', 'Accept' => 'text/html,application/xhtml+xml,application/xml', 'Accept-Encoding' => 'gzip', ]); $cli->set(['timeout' => 1]); $cli->get('/index.php'); $result['baidu'] = $cli->body; $cli->close(); $wg->done(); }); //掛起當前協程,等待所有任務完成后恢復 $wg->wait(); //這里 $result 包含了 2 個任務執行結果 var_dump($result); }); ~~~
                  <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>

                              哎呀哎呀视频在线观看