swoole协程是更加轻量级的线程,一个线程可以拥有多个协程,协程是在线程里面执行的,主要用于将线程中的竞争资源转化成协作运行,适用于处理IO密集型任务。
本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑
首先聊聊协程,了解一下协程到底有什么用,其特点又是什么
协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。 协程具有以下几个特点
用户态执行,完全由程序所控制,不是被操作系统内核所管理的
适用于处理IO密集型任务,至于什么是IO密集型任务这里就不做详细介绍了,主要区别于CPU密集型任务
将线程中的竞争资源,转化成协作运行
通道(Channel)的方式进行协程间的通信
少量的上下文切换开销,主要是运行在线程上,对比进程的上下文切换是保存在栈资源当中,而协程是异步非阻塞的,相当于用户态线程中的队列任务,只需要利用channel作为回调即可,不需要在任务完成后二次的资源抢夺
协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。
简单的说协程是寄宿在线程下程序员实现的一种跟更轻量的并发的协作轻量线程
随着程序员人群的增大,大佬也不断的爆发式增长,当然就开始有人觉得线程不好用了,那怎么办呢?当然是基于线程的理念上再去实现一套更加轻量、更好骗star的一套轻量线程(事实上协程不能完全被认为线程,因为一个线程可以有多个协程)
协程和线程的区别
本质
线程 内核态
协程 用户态
调度方式
线程的调度方式为系统调度,常用的调度策略有分时调度、抢占调度。说白就是线程的调度完全不受自己控制
协程的调度方式为协作式调度 不受内核控制由自由策略调度切换
推荐学习: swoole教程
以上是swoole协程是什么意思的详细内容。更多信息请关注PHP中文网其他相关文章!