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 回答