Code Bye

C#如何实现多进程之间相互的数据交互通信?

 

只有一个父进程,可能会派生出大约几十个子进程,然后父进程和每个子进程之间要进行相互的数据交互,请问各位如何实现为好呢?

PS:考虑过命名管道,但是貌似每个管道都需要在单独的线程里面处理,那么父进程就需要为每个管道建立一个专门的线程来处理,那就有几十个线程了。 也考虑过SOCKET,但是由于是在本机,不是特别想用socket

40分

LZ有点多虑了吧,建立线程处理,也仅是这个管道有数据读写时才会工作,其他大多数时间都处理监听(阻塞)状态,占用的资源很小。极端的,这些管道(五六十个线程)同时都在工作是不太容易出现的。那些子线程共享的数据,可以放在共享内存中,开启子进程时将虚拟文件句柄作为参数传进去
父子进程通信通过匿名管道可能会更好点,子进程依赖父进程的句柄

 

匿名管道可以处理子进程向父进程发数据么?貌似匿名管道是单向的?

 
不建议使用Socket,因为毕竟是在本机,以网络方式建立连接开销大而且速度慢。
 

是的,这是匿名管道最大的缺陷。

管道在Net中已经封装得很好用了,不过LZ也可以考虑用COM组件,要是追求效率,可以考虑用C++来写。合理地运用委托回调,尽可能地避免数据的反复传输

 
http://www.cnblogs.com/artech/archive/2007/03/05/664825.aspx
 

这个是撒?貌似和我的主题没什么关系啊

 

我不追求什么效率,只要父进程和各个子进程可以进行双向通信就可以了。当然,选择最优的方案。

 

Application Domain是可以实现多进程通信的。
没好好看看吧。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#如何实现多进程之间相互的数据交互通信?