C++ 异步线程间通信

C++ 异步线程间通信,c++,multithreading,events,boost,signals,C++,Multithreading,Events,Boost,Signals,我正在制作一个跨平台的程序,它运行一个小型RARP服务器(用winpcap/pcap实现)并运行两个TCP IP服务器。我必须使用C++。 因此,我将有至少4个线程,其中主线程包括控制器、2个TCP/IP异步套接字和RARP服务器 我计划使用C++ Boost Asio和线程,因为我需要在Linux和WindowsXP中运行这个程序。(我不能使用Qt) 我将执行异步线程间通信 例如,在不阻塞循环的情况下在循环内触发事件 我该怎么做?最好有便携式图书馆 谢谢你没有通用的解决方案,你不能只是中断一个

我正在制作一个跨平台的程序,它运行一个小型RARP服务器(用winpcap/pcap实现)并运行两个TCP IP服务器。我必须使用C++。 因此,我将有至少4个线程,其中主线程包括控制器、2个TCP/IP异步套接字和RARP服务器

<>我计划使用C++ Boost Asio和线程,因为我需要在Linux和WindowsXP中运行这个程序。(我不能使用Qt)

我将执行异步线程间通信

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

我该怎么做?最好有便携式图书馆


谢谢你

没有通用的解决方案,你不能只是中断一个线程并发送一个要处理的通知。这导致了可怕的重新进入问题和大量的僵局。只有当线程处于静止状态时,才能处理通知

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

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

查看

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


<> P>有C++、Obj-C、java、C、Python、Ruby和PHP的绑定。

我认为如果你问这个问题的更窄的版本,你会有更好的答案。这里有几个问题,有些问题与其他问题无关。。。。因为我已经使用了boost asio,所以我使用boost asio_服务对象来进行异步函数调用。非常感谢。