swoole 协程通信
生活不会放弃你,但也不会放过你。
协程通信
协程是基于线程的,而线程在同一个进程中是共享内存的,通信其实并不会有太大的问题,而进程因为有隔离问题的存在,所以进程之间的通信就将明了很多,关于协程的通信,swoole
直接就提供了一个Channel功能来帮助我们实现。
Channel概念
Channel,其实可以理解为就是一个消息队列,只不过它是协程间的消息队列,多个协程可以通过push和pop操作来生产和消费消息。
Channel是基于协程的。所以说它没有办法跨进程使用的。
Channel支持多生产者和多消费者协程,底层自动实现了协程的切换和调度,他与Array很类似,仅占用内容,没有额外别的资源申请,因此也就没有IO消耗,效率速度可想而知,他在底层使用的PHP的引用计数实现,没有内存的拷贝问题。