ITPub博客

首页 > IT职业 > IT生活 > swoole协程

swoole协程

IT生活 作者:darkfiber 时间:2021-09-09 10:34:08 0 删除 编辑
  • 单个协程版:

$n = 4;
go(function () use ($n) {    for ($i = 0; $i < $n; $i++) {
        Co::sleep(1);        
    };
});
花费 4.03s
⏎



  • 多协程版

$n = 4;for ($i = 0; $i < $n; $i++) {
    go(function () use ($i) {
        Co::sleep(1);      
    });
};
花费 1.02s
⏎


为什么时间有这么大的差异呢:

  • 普通写法, 会遇到 IO阻塞 导致的性能损失

  • 单协程: 尽管 IO阻塞 引发了协程调度, 但当前只有一个协程, 调度之后还是执行当前协程

  • 多协程: 真正发挥出了协程的优势, 遇到 IO阻塞 时发生调度, IO就绪时恢复运行


而 swoole 中的协程调度使用 单进程模型, 所有协程都是在当前进程中进行调度, 单进程的好处也很明显 。

不需要加锁,没有线程安全的问题



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4399/viewspace-2823647/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    93
  • 访问量
    527