【问题标题】:Communication Pattern for n Worker Processes using Named Pipes使用命名管道的 n 个工作进程的通信模式
【发布时间】:2011-12-20 11:29:55
【问题描述】:

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

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

这是我的想法,如何处理这个问题:服务器使用命令行参数启动,该参数确定它们在启动时应创建的管道的名称。然后客户端写入这些管道以分配工作。当服务器完成他们的工作时,他们将他们的结果写入他们接收工作的管道。客户端使用 n 个线程等待来自服务器的结果。当所有结果到达时,部分结果被组合起来。

你认为这有意义吗?您会看到在其中一个方向上使用单根管道的优势吗?您将如何同步访问?您有关于该主题的阅读提示吗?

【问题讨论】:

    标签: .net ipc named-pipes


    【解决方案1】:

    我绝不是命名管道方面的专家,但从我与他们的少量工作来看,您可以在同一个命名管道上运行多个服务器。当客户端尝试连接时,第一个可用的服务器会与客户端匹配。

    因此,您可以有一个命名管道,其中有十个服务器在监听它,当客户端请求连接时,它们将被分配一个可用服务器,从而提供某种基本的负载平衡机制。您还可以让单个客户端打开到同一个命名管道的多个连接,因此每个连接都将连接到不同的服务器实例。

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

    【讨论】:

    • 结果就是这么简单。客户端只需连接到下一个空闲服务器并打开自己的管道实例。因此,使用单个管道就足够了。另请参阅stackoverflow.com/questions/4570653/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多