日期:2014-05-17  浏览次数:21052 次

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

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

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

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

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