如果我想要線程A接收它的數據包並處理它們,並且某個線程B可以在某個時刻更改套接字的IP地址。線程數之間的事件C++
所以需要在這裏做的事情是: 線程A必須開始監聽新的IP和線程B必須以某種方式告訴給線程A
有什麼建議?請對我來說非常重要。
如果我想要線程A接收它的數據包並處理它們,並且某個線程B可以在某個時刻更改套接字的IP地址。線程數之間的事件C++
所以需要在這裏做的事情是: 線程A必須開始監聽新的IP和線程B必須以某種方式告訴給線程A
有什麼建議?請對我來說非常重要。
你可能需要一個工作流程,例如:
// thread A
// receive packets on initial address
WaitForSingleObject(event, INFINITE); // wait for address change
// receive packets on the new address
和
// thread B
// do some work
// change IP address
SetEvent(event); // signal A to start receiving on the new address
其實,我會讓我的評論答案:
創建/啓動另一個線程A實例,通過它新的IP /端口。在舊線程A中設置一些標誌,告訴退出本身並在清醒時清理它。
如果你想要一點點東西,或者你經常改變套接字操作,關閉舊線程A上的監聽套接字 - 它的accept()調用將失敗,並出現一些異常或錯誤,舊的線程A然後可以清理自己並死亡。
它對我感興趣,但你使用的是什麼庫? .NET,Qt,STL,Boost等等? – 2012-01-04 15:39:31
究竟你需要使用哪些功能進行同步? – Dialecticus 2012-01-04 15:46:14
在我看來,就像一個簡單的「重新建立套接字」-flag會做的,由線程B設置並由線程A檢查/清除。 – 2012-01-04 15:51:00