Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.9k views
in Technique[技术] by (71.8m points)

PHP的协程到底是什么意思?

看过Swoole的文档,有在网上查了很多资料,但是还是不太理解协程的意思,有关操作系统底层的东西还是太抽象了。哪位大佬可以解释一下呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

单核CPU在同一时间只能执行一个任务;
当前对于单核CPU的多进程任务时执行依靠不停的在CPU的时间片内切换任务来实现。如1s内先用10ms执行先任务1,然后中断,再用10ms执行任务2,如此来实现任务的并行。这里的CPU时间片切换是由操作系统控制的,也就是说如果任务1需要11ms,也是会强制发生中断的。
协程就是将CPU的控制权交给应用来执行。通过协程我们可以先执行任务1,当任务1需要某个资源而进入等待状态时,通过源语yeild交出CPU的控制权,去执行任务2。这样相对于多进程任务的好处是没有进程间的切换,减少性能损耗。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...