zbindu
zbindu
> 最好贴出来示例代码 while (static::$running[$workerId]) { try { $connection = $server->acceptConnection(); Coroutine::run(function () use ($connection, $workerId, $config, $waitReference): void { while (static::$running[$workerId]) { var_dump(Coroutine::getCurrent()->getPrevious()->getId()); // 这里的上级协程ID正确 try { /** @var ServerRequest...
> `Coroutine::getCurrent()->getPrevious()` 是协程当前切换调度链的上下级关系, previous 就是协程让出后会切到哪个协程去,0 就是调度器。 协程之间本身没有上下级关系,Swoole 里所谓的父协程其实记录的是这个协程是在哪个协程里创建的,因此会有所谓的父协程比子协程更早销毁的情况。 只要问出这种问题,一定是没办法正确理解协程之间的关系的,可以明确一下原始需求,大概率不需要以所谓的父子协程关系来做某种数据/上下文关联的依据。 还是很久以前看过swow相关文档,没有深入理解,以为跟swoole差不多~