父进程创建10个子进程,子进程和父进程之间通信问题

时间:2021-08-15 21:14:46
父进程创建10个子进程,各个子进程和父进程之间通过管道通信,管道不是特别了解,管道是否是一对多,或者需要10个管道,或者其他办法,请教。

11 个解决方案

#1


还可以考虑用socket等,它本身就是支持一个服务端对应多个客户端的情况

#2


共享内存是不错的选择

#3


自个顶一下

#4


共享内存过时了,不建议使用。
创建十个管道,不是不可以,但是显得太愚蠢了,也太耗费资源。
像你这种情况,最简单的方法有三种:
一、像楼上这位兄台的提议,用casynsocket做一个socket,这种也是最常见的方式。我这里有个项目,子进程几百个,全都是用的socket。
二、使用windows消息;
三、使用远程过程调用;

其中二和三都存在一个共同的缺陷:不能跨平台,只能在windows平台下使用。

#5


引用 4 楼 yuanningcz 的回复:
共享内存过时了,不建议使用。
创建十个管道,不是不可以,但是显得太愚蠢了,也太耗费资源。
像你这种情况,最简单的方法有三种:
一、像楼上这位兄台的提议,用casynsocket做一个socket,这种也是最常见的方式。我这里有个项目,子进程几百个,全都是用的socket。
二、使用windows消息;
三、使用远程过程调用;

其中二和三都存在一个共同的缺陷:不能跨平台,只能在windows平台下使用。

Socket方案不错,Windows消息机制可能不好处理,需要传递一些文本数据

#6


引用 2 楼 worldy 的回复:
共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误

#7


引用 6 楼 u010308862 的回复:
Quote: 引用 2 楼 worldy 的回复:

共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误


你把共享内存加一个写入锁,但是同一时间只允许一个进程进入。这样就不会有问题了。

#8


引用 6 楼 u010308862 的回复:
Quote: 引用 2 楼 worldy 的回复:

共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误


使用同步

#9


就用socket把,控制好做一些

#10


父进程创建10个子进程,子进程和父进程之间通信问题

#11


从日后的升级扩展考虑,宜采用tcp网络通信作为进程间通信的方式。

#1


还可以考虑用socket等,它本身就是支持一个服务端对应多个客户端的情况

#2


共享内存是不错的选择

#3


自个顶一下

#4


共享内存过时了,不建议使用。
创建十个管道,不是不可以,但是显得太愚蠢了,也太耗费资源。
像你这种情况,最简单的方法有三种:
一、像楼上这位兄台的提议,用casynsocket做一个socket,这种也是最常见的方式。我这里有个项目,子进程几百个,全都是用的socket。
二、使用windows消息;
三、使用远程过程调用;

其中二和三都存在一个共同的缺陷:不能跨平台,只能在windows平台下使用。

#5


引用 4 楼 yuanningcz 的回复:
共享内存过时了,不建议使用。
创建十个管道,不是不可以,但是显得太愚蠢了,也太耗费资源。
像你这种情况,最简单的方法有三种:
一、像楼上这位兄台的提议,用casynsocket做一个socket,这种也是最常见的方式。我这里有个项目,子进程几百个,全都是用的socket。
二、使用windows消息;
三、使用远程过程调用;

其中二和三都存在一个共同的缺陷:不能跨平台,只能在windows平台下使用。

Socket方案不错,Windows消息机制可能不好处理,需要传递一些文本数据

#6


引用 2 楼 worldy 的回复:
共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误

#7


引用 6 楼 u010308862 的回复:
Quote: 引用 2 楼 worldy 的回复:

共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误


你把共享内存加一个写入锁,但是同一时间只允许一个进程进入。这样就不会有问题了。

#8


引用 6 楼 u010308862 的回复:
Quote: 引用 2 楼 worldy 的回复:

共享内存是不错的选择

简单、但请问是否多个子进程往同一共享内存写、父进程是否会有读取数据错误


使用同步

#9


就用socket把,控制好做一些

#10


父进程创建10个子进程,子进程和父进程之间通信问题

#11


从日后的升级扩展考虑,宜采用tcp网络通信作为进程间通信的方式。