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_t名人事例ype选项将忽略用户参数,强制为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
本文发布于:2023-04-07 23:18:51,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/addcc662aa05cdea29a67a9d56119abd.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:swoole进程间如何通信.doc
本文 PDF 下载地址:swoole进程间如何通信.pdf
留言与评论(共有 0 条评论) |