PHP 新 RFC 真异步可能性
链接在 github.com/php/php-src/issues/2219...
// 创建——线程立即启动并开始执行
$thread = spawn_thread(fn() => compute());
// 等待结果。调用协程等待;其他协程继续运行
$result = await($thread);
// 或者非阻塞检查
if ($thread->isCompleted()) {
$result = $thread->getResult();
}
<?php
use function Async\spawn;
use function Async\spawn_thread;
use function Async\await;
use function Async\delay;
// 主协程中的计时器——证明并行线程
// 不会阻止主程序继续运行
spawn(function() {
for ($i = 0; $i < 5; $i++) {
echo "tick $i\n";
delay(100);
}
});
spawn(function() {
$thread = spawn_thread(function() {
// 在独立线程中进行的大量计算
$sum = 0;
for ($i = 0; $i < 5_000_000; $i++) {
$sum += sqrt($i);
}
return $sum;
});
$result = await($thread);
echo "heavy done: ", (int) $result, "\n";
});
欢迎加入闲聊群 分享:还是建一个闲聊群吧,曾经这么多的人社区可惜了
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
推荐文章: