[英]asynchronous Inter thread communication
我正在制作一個跨平台程序,該程序嵌入一個小型RARP服務器(使用winpcap / pcap實現)並運行2個TCP IP服務器。 我必須使用C ++。
因此,我將至少有4個線程,其中一個主要是控制器,2個TCP / IP異步套接字以及RARP服務器。
我計划使用c ++ BOOST Asio和Thread,因為我需要在linux和Windows XP中都運行此程序。 (我不能使用Qt)
我將執行異步線程間通信。
對於循環內的示例火災事件,而不會阻塞循環
我怎樣才能做到這一點? 最好帶有便攜式庫房。
謝謝
沒有通用的解決方案,您不能只是中斷線程並傳遞要處理的通知。 這導致可怕的重新進入問題和大量僵局。 僅當線程處於靜止狀態時,才能處理通知。
操作系統通常具有使之成為可能的可用服務。 在Windows中,通常是通過將消息發布到消息隊列來完成的。 由消息循環讀取,這是UI線程的“空閑”狀態。 或通過利用異步過程調用在線程阻塞並顯式允許APC運行時觸發。
但是,您需要使用非平台特定的解決方案來解決此問題。 在這種情況下,您幾乎注定要重新發明OS功能。 您將需要在需要接收通知的線程中輪詢的線程安全隊列。 消息隊列,由消息循環讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.