swoole 各种异步操作的应用场景是怎么样的?

新手上路,请多包涵

学习swoole,把文档看完了,也从GitHub上找了几个源码。
看完之后有几点疑惑请教一下大家。

目前我所知的异步操作主要分几块。
1、开一个process进程
2、回调中使用Coroutine
3、丢到task进程中

这几种都可以进行异步操作,那为什么要分出这么多操作方式来。每一种的具体应用场景是怎么样的?

另外,php是单线程,进程的执行顺序又是串行的。是不是意味着所谓的异步其实还是在顺序执行?

请教一下大家,谢谢。

阅读 2.7k
2 个回答
新手上路,请多包涵

重新看了一下文档。task是真的异步非阻塞的,丢到task里面,recv去接收就行了。
coroutine是阻塞的。结果要等执行最长的协程完成后,程序才会继续往下执行,区别在于加快了程序的执行速度。
process确实到现在还不明白具体的应用场景是什么

从 cpu 角度看问题,如果你是多核处理器,举个例子,假设你的worker进程使用cpu0,那同时 process、task 在不同进程中执行可能会用cpu1。

而如果用Coroutine,你的代码永远只会单核按顺序执行,差别就是不会阻塞进程

可以看一下这篇:https://my.oschina.net/yurun/...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题