2011-12-20 25 views
1

我是使用管道的IPC的新手,并且我不熟悉常用模式。这是我必须处理的设置:有一个客户端进程将工作分配给n个服务器进程。完成后,服务器必须将其结果发送回服务器。从一开始就知道必须分发的工作量。使用命名管道的n个工作进程的通信模式

Client 
    |__Pipe 1_____ Server 1 
    | 
    |__Pipe 2_____ Server 2 
    | 
    |__ ... 

这里我的想法,如何处理这样的:服务器开始一个命令行参数确定启动时,他们应当创造了管道的名称。客户然后写入这些管道以分配工作。当服务器完成他们的工作时,他们将他们的结果写入他们接受工作的管道中。客户端用n个线程等待来自服务器的结果。当所有结果到达时,部分结果被汇总。

您认为这有意义吗?你会发现在一个方向上使用单一管道的好处吗?你将如何同步访问?你有阅读这个话题的提示吗?

回答

1

我绝对不是专家级的命名管道,但从我与他们的小工作中,可以让多个服务器在同一个命名管道上运行。当客户端尝试连接时,第一个可用服务器与客户端匹配。

所以,你可以有一个具有说十台服务器听着它,而当客户端请求的连接,他们将被分配一个可用的服务器,从而提供某种基本的负载均衡机制的单一命名管道。您也可以让一个客户端打开到同一个命名管道的多个连接,因此每个连接都将连接到不同的服务器实例。

这样的答案将提供建立的连接上,但你不会有管理和协调服务器和客户端之间的管道名称。

+0

原来这很容易。客户端只需连接到下一个免费服务器并打开自己的管道实例。所以使用单个管道就够了。也http://stackoverflow.com/questions/4570653/multithreaded-namepipeserver-in-c-sharp见。 – h0b0 2011-12-21 11:00:22

相关问题