Swoole协程核心API之getContext
功能:
Coroutine::getContext()用于回去当前协程的独立上下文对象,存储协程内共享的数据,确保协程间数据隔离.
getContext和局部变量的对比:
| 对比点 | 局部变量 | getContext |
| 隔离性 | 在协程内是隔离的 | 隔离 |
| 作用域 | 只在当前函数或当前闭包内有效 | 在整个协程内都可以访问 |
| 适合多层调用 | 必须一致通过函数参数传递下去 | 任意函数都能取到 |
| 封装能力 | 差 | 可做协程容器 |
| 生命周期 | 跟变量作用域走 | 跟协程走(协程销毁时清理) |
如果你的变量只在一个函数闭包里用,用普通变量没问题.
如果你要跨函数,跨类,甚至中间调用了异步库(如数据库连接池,任务调度器等),用getContext()是最稳妥的方案.
getContext()本质上是每个协程内的超全局变量.

浙公网安备 33010602011771号