× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

协程与线程

Swoole的协程在底层实现上是单线程的,因此同一时间只有一个协程在工作,协程的执行是串行的。这与线程不同,多个线程会被操作系统调度到多个CPU并行执行。

一个协程正在运行时,其他协程会停止工作。当前协程执行阻塞IO操作时会挂起,底层调度器会进入事件循环。当有IO完成事件时,底层调度器恢复事件对应的协程的执行。

CPU多核的利用,仍然依赖于Swoole引擎的多进程机制。


  • daydaygo

    一个协程正在运行时,其他协程会停止工作 意思是一个 cpu 核心上, 只能运行一个协程么? 同一时刻, 线程一个 cpu 核心上也只能运行一个线程呀? 区别是协程会执行完自己让出 cpu, 线程是让 cpu 自动调度么?

    对CPU多核的利用,仍然依赖于Swoole引擎的多进程机制 意思是请求分发到不同的 worker 进程上, worker 进程被调度到不同的 cpu 核心, 每个 cpu 核心当前都是可以执行一个协程的, 从而达到并行执行多个协程的效果?

  • dinosaur

    进程绑定内核的吧,怎么会调度到不同cpu

  • 涅凡尘

    应该就是1楼这个意思