2013-08-23 29 views
0

我們正在閱讀在ZMQ中廣播的Kinect的消息。避免在ZMQ中緩衝一段確定的時間?

我們或多或少使用下面的代碼:

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在暫停時停止接收消息,還是清除緩衝區?

+0

你試過我提出的解決方案嗎?我希望它對你有用.. – raffian

回答

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"); 

我只是用單獨的線測試此,當用戶醒來時,它不會rerieve斷開狀態時發送的消息。

+0

謝謝,我的快速骯髒的解決方案是在暫停步驟中繼續檢索郵件,它很髒,但它在一定程度上工作 –

+0

我以爲你不想在暫停步驟中檢索郵件? – raffian

+0

我不需要它們,就是這樣,我認爲只是暫停過程而不是浪費內存讀取不需要的值 –