首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步线程间通信

异步线程间通信
EN

Stack Overflow用户
提问于 2010-08-15 18:17:47
回答 2查看 3.7K关注 0票数 3

我正在编写一个跨平台的程序,它使用一个小型RARP服务器(使用winpcap/pcap实现),并运行两个TCP服务器。我必须使用C++。

因此,我将至少有4个线程,主线程包括控制器、2个TCP/IP异步套接字和RARP服务器。

我计划使用c++ BOOST Asio和线程,因为我需要在linux和windows XP上运行这个程序。(我不能使用Qt)

我将执行异步线程间通信。

例如,在不阻塞循环的情况下,在循环内发生火灾事件

我该怎么做呢?最好是带便携的书库。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-15 22:27:36

对此没有通用的解决方案,您不能只是中断线程并传递要处理的通知。这会导致可怕的重新进入问题和大量的死锁。只有当线程处于静止状态时,才能处理通知。

操作系统通常具有使其成为可能的可用服务。在Windows中,这通常是通过将消息发送到消息队列来完成的。由消息循环读取,这是UI线程的“空闲”状态。或者利用异步过程调用,在线程阻塞并显式允许APC运行时触发。

但您需要一个非平台特定的解决方案,从而切断了这一点。在这种情况下,你几乎注定要重新发明一个操作系统功能。您将需要一个线程安全队列,在需要接收通知的线程中轮询该队列。消息队列,由消息循环读取。

票数 3
EN

Stack Overflow用户

发布于 2010-08-16 00:17:05

看一看ICE messaging

它支持进程之间的同步和异步消息传递,无论它们是否在同一节点上。

有用于C++、Obj-C、Java、C#、Python、Ruby和PHP的绑定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3486963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档