协程是什么
协程可以理解为纯用户态的线程,其通过协作而不是抢占来进行切换,相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低,Swoole 可以为每一个请求创建对应的协程,根据 IO 的状态来合理的调度协程。
在 Swoole 4.x 中,协程(Coroutine)取代了异步回调,成为 Swoole推荐的编程方式。Swoole 协程解决了异步回调编程困难的问题,使用协程可以以传统同步编程的方法编写代码,底层自动切换为异步 IO,既保证了编程的简单性,又可借助异步 IO,提升系统的并发能力。
注:Swoole 4.x 之前的版本也支持协程,不过 4.x 版本对协程内核进行了重构,功能更加强大,提供了完整的协程+通道特性,带来全新的 CSP 编程模型。
基本使用示例
- PHP 版本要求:>= 7.0;
- 基于
Server
、Http\Server
、WebSocket\Server
进行开发的时候,Swoole 底层会在onRequest
、onReceive
、onConnect
等事件回调之前自动创建一个协程,在回调函数中即可使用协程 API; - 你也可以使用
Coroutine::create
或go
方法创建协程,在创建的协程中使用协程 API 进行编程。
以 Swoole 自带的 TCP 服务器