0

2 つの C++ プロセス (A と B) があり、Windows で実行され、一方が他方を起動します。それらの実行を効果的にシングルスレッドにしたいと思います。例えば:

  1. プロセスAを開始
  2. A が B を作成する
  3. A サスペンド
  4. Bはいくつかの固定された一連の操作を実行します
  5. B が一時停止し、A が再開されます
  6. A はいくつかの固定された一連の操作を実行します
  7. Aが一時停止、Bが再開
  8. (4 ~ 7 を繰り返します)

この種の動作を実装するのに最適な Windows 同期および IPC サービスはどれですか?

4

3 に答える 3

6

この場合、イベントは機能します。

  • A はイベントを作成し、プロセス B を開始します
  • A は、イベントが通知されるのを待ちます
  • B もイベントを作成し、それが最初の項目であり、次に A のイベントを通知します (既知の名前を持っているか、開始時または他のメカニズムを使用して B にハンドルを渡すことができます)。
  • B はそのイベントを待機します
  • A がそのイベントの待機から再開すると、その作業を行い、B のイベントを通知し、独自に待機します。
  • すぐ...

エラー処理があることを確認して、他のプロセスがハングまたは予期せず終了した場合に、各プロセスが再開して必要なことを実行できるようにしてください。タイムアウトはハング状態を処理でき、他のプロセスのハンドルを待機することで (プロセスとイベント ハンドルの両方と共に WaitForMultipleObjects() を使用して)、他のプロセスが終了するかどうか、またいつ終了するかを判断できます。

于 2008-10-30T07:09:32.953 に答える
2

プロセス B に 2 つのイベント ハンドル (CreateEvent) を渡します。各プロセスは、WaitForSingleObject() を呼び出して、他のプロセスが一連の作業を完了するのを待ちます。

于 2008-10-30T07:03:18.143 に答える
0

プロセス間同期には、セマフォを使用できます。これがドキュメントです。

于 2008-10-30T06:52:19.350 に答える