1

マルチスレッド プログラミングとプロセス間通信メカニズムの初心者です。

async_receive()無限ループで着信データを待機するプログラム(Aとしましょう)があります。

ここで、プログラム A を別のプロセス (B としましょう) から制御したいと考えています。

より正確には、プログラム B がシグナルを送ったときにプログラム A を終了させたいと考えています。そうio_service()すれば、プログラム A がキャンセルされ、プログラム A が終了します。

プログラム A に B からのシグナルを待つスレッドを定義する必要があるようです。

私の質問は、なぜBから信号を受信できるのですか?

message_queue(mq) ( )を使ってみましたboost/interprocess/ipc/message_queue。それで、Bはにメッセージを入れますが、mqプログラムAにデータを読み取るように通知するにはどうすればよいmqですか? mq新しいメッセージがエンキューされたときにハンドラーを呼び出す ことは可能ですか?

つまり、Boost ライブラリを使用して B から A を中断したいのです。ヒントをいただければ、とても助かります。

4

1 に答える 1

0

別のプロセスからシャットダウンのシグナルを受け取る方法は多数ありますが、最適な方法はアプリケーションによって異なります。

アプリケーションが着信接続を既に受け入れている場合は、ループバック インターフェイス (localhost) でリッスンし、プロセス B に接続してシャットダウンを要求できます。

もう 1 つの方法は、共有条件変数を待機するスレッドを生成することです。プロセス B がプロセス A をシャットダウンしたい場合、条件変数を通知するだけで、プロセス A の待機中のスレッドが起動して処理を実行します。

于 2013-11-06T22:21:28.287 に答える