こんにちは、私は OS の独立性を維持しようとしている C++ プロジェクトに取り組んでおり、通信する必要がある 2 つのプロセスがあります。他の 2 つのプロセスを非同期で調整するために、3 つ目のプロセス (おそらくサービスとして?) をセットアップすることを考えていました。
クライアント 1 は、データの準備ができたときに中間プロセスに通知し、データを送信します。中間プロセスは、クライアント 2 がデータの準備が整ったことを通知するまで、このデータを保持します。中間プロセスがクライアント 1 から新しいデータを受信していない場合、クライアント 2 に待機するように指示します。
この OS を独立させようとしているので、何を使用すればよいかわかりません。MPI の使用を検討しましたが、実際にはこの目的に適合していないようです。Boost.ASIO、名前付きパイプ、RPC、および RCF についても調査しました。現在 Windows でプログラミングしていますが、コードが Linux でコンパイルされる可能性があるため、WIN_API の使用は避けたいと考えています。
ここでは、2 つのプロセスについてもう少し詳しく説明します。
中間プロセスを介して GUI (Qt で記述されたクライアント 2) から初期入力を受け取るバックエンド プロセス/モデル (クライアント 1) があります。その後、モデルは終了条件が満たされるまで処理を続行し、準備が整うとサーバーにデータを送信します。GUI は定期的に中間プロセスにデータを要求し、モデルがデータを更新していない場合は待機するように指示されます。モデルからデータが利用可能になると、ユーザーが選択した場合にファイルにエクスポートするために、現在のセッションからの以前のデータを保持できるようにすることも必要です (つまり、GUI がコマンドを発行するようにします)。データをエクスポート (またはロード) するためのインターフェイス)。
バックエンド/モデルの変更権限は、上で概説した設計に従う以外は最小限です。私はかなりの量の C++ の経験がありますが、並列/非同期アプリケーションの経験はあまりありません。どんな助けや指示も大歓迎です。