协程是一种轻量级的线程,可以在同一个线程中控制多个子程序的执行流程,从而避免了线程上下文切换的开销。这段代码使用PHP实现了简单的协程
function coroutine1() {
for ($i = 0; $i < 5; $i++) {
echo "coroutine1: " . $i . PHP_EOL;
yield;
}
}
function coroutine2() {
for ($i = 0; $i < 10; $i++) {
echo "coroutine2: " . $i . PHP_EOL;
yield;
}
}
$generator1 = coroutine1();
$generator2 = coroutine2();
while (true) {
$generator1->current();
$generator1->next();
if (!$generator1->valid() && !$generator2->valid()) break;
$generator2->current();
$generator2->next();
if (!$generator1->valid() && !$generator2->valid()) break;
}