问题过于复杂。一个非常直接的解决方案是按照 Uwe 和 David 的建议重新设计:
(1) 工人应用程序。(2) 长时间运行的 TcpServer,等待客户端并调用 worker (3) 客户端。
=========================
我想构建一个SampleApp
功能为:
- 启动时,它会检查是否已经在
SampleApp
运行; - 如果不是,它启动 a
TcpServer
, aTcpClient
,将某个命令从它传递TcpClient
到它的TcpServer
,完成工作,关闭TcpServer
,然后退出; - 如果是,它启动 a
TcpClient
,将命令传递给另一个TcpServer
并退出。(其他人TcpServer
会做这项工作。) SampleApp
当第一个仍在运行时,可能有多个启动。
我不知道如何实际解决这个问题,例如:
- 从哪个架构开始?(著名的 OmniThreadLibrary 似乎处理基于线程的并发,而不是基于操作系统进程的并发。)
- 没有
SampleApp
跑步。两个SampleApp
(几乎)同时启动。如何保证只启动一个 TcpServer?(没有“全局列表”来注册传入的“玩家”。) - 有一个
SampleApp
正在运行。如果 2nd 检测到 1st 的 mutex 并因此决定成为 TcpClient,但 1st 停止其 TcpServer 并退出,如何处理?
任何见解表示赞赏!