0

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

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

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

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

请教一下大家,谢谢。

manlin 2
2019-06-29 提问
2 个回答
0

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

0

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

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

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

撰写答案

推广链接