三:协程通信之channel入门
我们在实际场景进行相关业务开发的时候,很可能协程之间并不是独立存在的,而是有相关业务纠缠的,这里就需要用到了协程的通信;
一:先看一个例子:(单个协程)
二:两个协程
a:第一个协程使用引用,第二个不使用
b:两个协程都是用引用
c:两个协程都不使用引用
d:第一个协程不使用,第二个使用的情况
总结:一旦使用了引用就会重新开辟一个内存空间进行传址指向该引用的值;
三:Coroutine\Channel
通道,类似于go
语言的chan
,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。
swoole中协程之间通信的编程范式
a:协程内部禁止使用全局变量和静态变量
b:协程使用use关键字引用外部变量到当前作用域的时候禁止使用引用
c:协程之间的通讯必须使用Channel
d:与xdebug
、xhprof
、blackfire
等zend
扩展不兼容,例如不能使用xhprof
对协程server
进行性能分析采样