Swoole 协程的思考-执行顺序
示例
情况一:非阻塞IO
1 |
|
输出
1 | AA2020-07-22 17:12:55 |
情况二:阻塞IO
1 |
|
输出
1 | AA2020-07-22 17:13:32 |
情况三:前面阻塞IO,后面非阻塞IO
1 |
|
1 | AA2020-07-22 17:14:53 |
情况四:前面非阻塞IO,后面阻塞IO
1 |
|
输出
1 | AA2020-07-22 17:16:39 |
情况五:多个协程运行时
1 |
|
输出
1 | AA2020-07-22 17:20:17 |
总结
- 协程如遇到阻塞代码,会跳出当前协程,执行下一个协程。直至处理结束后,继续处理.
- 协程的处理是串行的,非并行处理
- 一个进程有多个线程,一个线程有多个协程
- 进程和线程是系统态;线程是用户态
- 协程仅是一个函数,不支持多核计算
- 一个线程内的多个协程虽然可以切换,但是多个协程是串行执行的,只能在一个线程内运行,没法利用CPU多核能力
- 协程与进程一样,切换是存在上下文切换问题的。