swoft
swoft copied to clipboard
sgo如何控制并发数?
$wg = new WaitGroup();
foreach ($dataArr as $v){
$wg->add();
sgo(function () use ($wg) {
$wg->done();
});
}
想实现new WaitGroup(10);控制并发数10
达到的情况下add()会自动阻塞等待
用channel 控制并发
@zarte 您最后怎么做的?
@zch513430014
$chan = new Channel(3); foreach ($gamelist as $gameid) { if ($chan->push(1, (float)1800)) { sgo(function () use ($chan,$gameid) { $chan->pop((float)180); },false) } } while (!$chan->isEmpty()){ Coroutine::sleep(5); }