swoole 协程

<?php


Co\run(function () {
    $wg = new \Swoole\Coroutine\WaitGroup();

    $result = [];

    $wg->add();//协程数量加1 

    $time = microtime(true);
    //启动第一个协程
    go(function () use ($wg, &$result) {//use 关键字 函数闭包 调用外部变量
        co::sleep(1);
        $result['data0'] = "lala";
        echo "协程1 任务完成\n";
        $wg->done();//本协程任务完成
    });

    $wg->add();//协程数量加1
    //启动第二个协程
    go(function () use ($wg, &$result) {
        co::sleep(2);
        $result['data1'] = "lala";
        echo "协程2 任务完成\n";
        $wg->done();//本协程任务完成
    });

    //挂起父协程,等待所有子协程任务完成后恢复
    $wg->wait();

    echo "所有协程任务完成,总耗时".(microtime(true)-$time)."s\n";
    //这里 $result 包含了 2 个任务执行结果
    var_dump($result);
});

  

https://blog.csdn.net/qq_35772366/article/details/106304489

posted @ 2021-11-17 14:28  brady-wang  阅读(78)  评论(0编辑  收藏  举报