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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!