webman怎么实现类似swoole的waitGroup和golang的sync.WaitGroup这种并行程序?

cqqjj1029

参考:https://www.easyswoole.com/QuickStart/Coroutine/waitGroup.html

EasySwoole的示例:

<?php
go(function () {
    $ret = [];

    $wait = new \EasySwoole\Component\WaitGroup();

    $wait->add();
    // 启动第 1 个协程
    go(function () use ($wait, &$ret) {
        // 模拟耗时任务 1
        \co::sleep(0.1);
        $ret[] = time();
        $wait->done();
    });

    $wait->add();
    // 启动第 2 个协程
    go(function () use ($wait, &$ret) {
        // 模拟耗时任务 2
        \co::sleep(2);
        $ret[] = time();
        $wait->done();
    });

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

    // 这里 $ret 包含了 2 个任务执行结果
    var_dump($ret);
});
1534 1 0
1个回答

nitron

不支持
或者event-loop使用swoole试试

  • cqqjj1029 2022-04-25

    当前版本的webman或者workerman中可以引入swoole扩展吗?

  • cqqjj1029 2022-04-26

    其实我要做的是在后端把大文件分片上传到Aws的对象存储,又不想换框架,既然webman里暂时不支持这种写法,先用guzzle的postAsync去实现并行请求吧

年代过于久远,无法发表回答
×
🔝