只有一个父进程,可能会派生出大约几十个子进程,然后父进程和每个子进程之间要进行相互的数据交互,请问各位如何实现为好呢? PS:考虑过命名管道,但是貌似每个管道都需要在单独的线程里面处理,那么父进程就需要为每个管道建立一个专门的线程来处理,那就有几十个线程了。 也考虑过SOCKET,但是由于是在本机,不是特别想用socket |
|
40分 |
LZ有点多虑了吧,建立线程处理,也仅是这个管道有数据读写时才会工作,其他大多数时间都处理监听(阻塞)状态,占用的资源很小。极端的,这些管道(五六十个线程)同时都在工作是不太容易出现的。那些子线程共享的数据,可以放在共享内存中,开启子进程时将虚拟文件句柄作为参数传进去 |
匿名管道可以处理子进程向父进程发数据么?貌似匿名管道是单向的? |
|
不建议使用Socket,因为毕竟是在本机,以网络方式建立连接开销大而且速度慢。
|
|
是的,这是匿名管道最大的缺陷。 管道在Net中已经封装得很好用了,不过LZ也可以考虑用COM组件,要是追求效率,可以考虑用C++来写。合理地运用委托回调,尽可能地避免数据的反复传输 |
|
http://www.cnblogs.com/artech/archive/2007/03/05/664825.aspx
|
|
这个是撒?貌似和我的主题没什么关系啊 |
|
我不追求什么效率,只要父进程和各个子进程可以进行双向通信就可以了。当然,选择最优的方案。 |
|
Application Domain是可以实现多进程通信的。 |