Coroutine::getPcid

最后更新于:2022-04-02 06:25:49

# Coroutine::getPcid [TOC] > 需要v4.3.0及以上 ## API ~~~ function Coroutine::getPcid() : int ~~~ ## 例子 ~~~ echo Co::getPcid(), "\n"; go(function () { echo Co::getPcid(), "\n"; go(function () { echo Co::getPcid(), "\n"; go(function () { echo Co::getPcid(), "\n"; go(function () { echo Co::getPcid(), "\n"; }); go(function () { echo Co::getPcid(), "\n"; }); go(function () { echo Co::getPcid(), "\n"; }); }); echo Co::getPcid(), "\n"; }); echo Co::getPcid(), "\n"; }); echo Co::getPcid(), "\n"; ~~~ ### 输出 > 0作为未来保留的主协程id, 目前不会作为返回值 > > 非嵌套协程调用`getPcid`将返回-1 (从非协程空间创建的) > > 在非协程内调用`getPcid`将返回-1 (非协程没有父协程, 指向自己) ~~~ -1 -1 1 2 3 3 3 1 -1 -1 ~~~ ## 注意 协程之间并没有实质上的持续父子关系, 协程之间是相互隔离, 独立运作的 此Pcid可理解为创建了当前协程的协程id ## 用途 ### 串联多个协程调用栈 ~~~ go(function () { go(function () { $ptrace = Co::getBackTrace(Co::getPcid()); // balababala var_dump(array_merge($ptrace, Co::getBackTrace(Co::getCid()))); }); }); ~~~ Implemented in:[A](https://github.com/swoole/swoole-src/commit/6812049a1cd478535ed94025a96884ee34d0016c)[B](https://github.com/swoole/swoole-src/commit/1884d60fe6af880ef781399a4544014128f02ac7)
';