0

ZMQ でブロードキャストしている Kinect からメッセージを読み込んでいます。

多かれ少なかれ次のコードを使用します。

socket_t subscriber_eeg(context, ZMQ_SUB);
subscriber_eeg.connect("tcp://127.0.0.1:5559");
while(true)
{
Do Random stuff
if (pressedPause)
{
    //shows message
    continue;
}

subscriber.recv(&kinect_msg);
//code to process message
//code to plot the hand movements.
}

目的は、誰かが一時停止を押した特定のイベントでコードの実行を一時停止することです。一時停止イベントはスレッド上で独立して実行されています。

すべて正常に動作しますが、問題は、ZMQ がメッセージをバッファリングするため、一時停止状態でキャプチャされたすべての動きを突然プロットし始めることです。

一時停止が発生した場合にメッセージの受信を停止するか、バッファをクリアするように ZMQ に指示する方法はありますか?

4

1 に答える 1

1

接続状態を切り替えるだけです:

subscriber.connect("tcp://127.0.0.1:5559");
//do work

//user presses 'Pause'
subscriber.disconnect("tcp://127.0.0.1:5559");

//user un-'Pauses'
subscriber.connect("tcp://127.0.0.1:5559");

これを別のスレッドでテストしたところ、サブスクライバーが目覚めたときに、切断された状態で送信されたメッセージを取得しません。

于 2013-08-23T22:32:57.807 に答える