簡體   English   中英

異步線程間通信

[英]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功能。 您將需要在需要接收通知的線程中輪詢的線程安全隊列。 消息隊列,由消息循環讀取。

看看ICE消息傳遞

它支持進程之間的同步和異步消息傳遞,無論它們是否在同一節點上。

有C ++,Obj-C,Java,C#,Python,Ruby和PHP的綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM