我是使用管道的IPC新手,我不熟悉通常的模式。以下是我必须处理的设置:有一个客户端进程将工作分配给n个服务器进程。完成后,服务器必须将结果发送回服务器。必须分配的工作量从一开始就已知。
Client
|__Pipe 1_____ Server 1
|
|__Pipe 2_____ Server 2
|
|__ ...
这是我的想法,如何处理这个问题:服务器以命令行参数启动,确定启动时应创建的管道名称。然后客户端写入这些管道以分发工作。当服务器完成工作时,他们会将结果写入他们收到工作的管道。客户端等待n个线程来获取服务器的结果。当所有结果到达时,将汇总部分结果。
你觉得这有道理吗?您是否会看到在其中一个方向上使用单个管道的优势?你会如何同步访问?你有关于这个主题的阅读技巧吗?
答案 0 :(得分:1)
我绝不是命名管道的专家,但是从我与他们的小工作中,你可以在同一个命名管道上运行多个服务器。当客户端尝试连接时,第一个可用服务器与客户端匹配。
因此,您可以拥有一个名为10个服务器的命名管道,当客户端请求连接时,它们将被分配一个可用的服务器,从而提供某种基本的负载平衡机制。您还可以让单个客户端打开与同一命名管道的多个连接,因此每个连接都将连接到不同的服务器实例。
这样会在已建立的连接上提供答案,但您不必管理和协调服务器和客户端之间的管道名称。