swoft icon indicating copy to clipboard operation
swoft copied to clipboard

sgo如何控制并发数?

Open zarte opened this issue 5 years ago • 3 comments

  $wg = new WaitGroup();
 foreach ($dataArr as $v){
$wg->add();
sgo(function () use ($wg) {
 $wg->done();
 });
}

想实现new WaitGroup(10);控制并发数10
达到的情况下add()会自动阻塞等待

zarte avatar Sep 30 '20 10:09 zarte

用channel 控制并发

phpwei avatar Nov 10 '20 10:11 phpwei

@zarte 您最后怎么做的?

zch513430014 avatar Sep 17 '21 08:09 zch513430014

@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); }

zarte avatar Mar 15 '22 02:03 zarte