問題は複雑すぎる。非常に簡単な解決策は、Uwe と David が提案したように再設計することです。
(1) ワーカーアプリ。(2) クライアントを待機し、ワーカーを呼び出す、長時間実行される TcpServer (3) クライアント。
========================
SampleApp
次のように機能するを構築したいと思います。
SampleApp
起動すると、すでに実行されているかどうかがチェックされます。- そうでない場合、 a
TcpServer
、 aを開始し、TcpClient
特定のコマンドを から に渡し、作業を行い、 を閉じ、終了します。TcpClient
TcpServer
TcpServer
- はいの場合、 を開始し
TcpClient
、コマンドを他のコマンドに渡してTcpServer
終了します。(他のTcpServer
人が仕事をします。) SampleApp
最初の 1 つがまだ実行されているときに、複数が開始されている可能性があります。
たとえば、この問題を実際に解決する方法がわかりません。
- どのアーキテクチャから始めるか? (定評のある OmniThreadLibrary は、OS プロセス ベースの同時実行ではなく、スレッド ベースの同時実行を処理しているようです。)
SampleApp
ランニングはありません。2 つSampleApp
が (ほぼ) 同時に開始されます。TcpServer が 1 つだけ開始されることを保証するにはどうすればよいですか? (入ってくる「プレイヤー」を登録するための「グローバルリスト」はありません。)- 1本
SampleApp
走っています。2 番目が 1 番目のミューテックスを検出し、TcpClient であると決定した場合に、1 番目が TcpServer を停止して終了した場合の処理方法は?
どんな洞察も大歓迎です!