× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Coroutine::list

v4.3.0以下版本需使用listCoroutines, 新版本缩略了该方法的名称并将listCoroutines设为别名

遍历当前进程内的所有协程。

function Coroutine::list() : Coroutine\Iterator
function Coroutine::listCoroutines() : Coroitine\Iterator

需要4.1.0或更高版本

  • 返回迭代器,可使用foreach遍历,或使用iterator_to_array转为数组
$coros = Coroutine::listCoroutines();
foreach($coros as $cid)
{
    var_dump(Coroutine::getBackTrace($cid));
}

  • 寻找普拉多

    问下是因为进程安全吗,a.php 执行go(),b.php co::listCoroutines 获取不到?

  • successgaodc

    是的。每一个进程内的协程是隔离的。

  • jichengyang

    协程只在同一个进程里面共享,swoole里面说明了 协程是基于用户级线程实现的 所有线程共享创建它的进程的资源 [http://my.oschina.net/cnyinlinux/blog/367910]--学习swoole的小伙伴 可以同时学习liunx的进程和线程(含义、联系、区别...),进程和线程的调度、进程和线程的通讯....这篇大佬写的文章 小的 推荐了