|
Swoole过程间通讯的方式
管道pipe
管道用于过程之间的数据交互,Linux系统自己供给了pipe函数用于建立一个半双工通讯管道。半双工的通讯方式中数据只能单向活动(一端只读一端只写),只能在具有亲缘关系(父子过程)的过程之间利用。
管道是过程间通讯IPC中最根柢的方式,管道有两种典范别离是命名管道、匿名管道。
匿名管道:专门用于具有血缘关系的过程之间,完成数据转达。命名管道:可以用在任何两个过程之间,Swoole中的管道都是匿名管道。
在Swoole中利用eventfd和UnixSock封装了两种管道,使得过程之间的通讯加倍灵活。
Swoole的Process模块内置了管道的方式用于过程间通讯,在构建Process实例时只要开启了$pipe_type选项,Swoole底层会自动建立一个管道,这里需要说明的时,固然名字上叫做管道,但现实上在新版Swoole中底层通讯是经过UnixSock实现的,所以并不是真正意义上的Linux Pipe。
建立过程
管道典范$pipe_type可分为三种:
0表现不建立管道
1表现建立SOCK_STREAM典范的管道
2表现建立SOCK_DGRAM典范的管道
当启用$redirect_stdin_stdout后,$pipe_type选项将疏忽用户参数,强逼为1。
管道描摹符
当过程被fork出来后,父过程和子过程中的Process工具会被设备上一个名为pipe的成员变量,寄存着底层UnixSocket的描摹符,父过程和子过程可以经过这个管道描摹符来发送数据,也可以间接挪用Process供给的read/write接口来收发数据。
管道读写
swoole_process->write(string $data) 向过程的管道中写入数据
swoole_process->read(int $buffer_size = 8192) 从过程的管道中读取数据
以上就是swoole过程间怎样通讯的具体内容,更多请关注我吧
有需要进修交换的朋友请加入Swoole交换群的我们一路,有题目一路交换,一路进步!条件是你是学技术的。感激阅读!
点此加入该群jq.qq.com
免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|