1

我是多线程编程和进程间通信机制的新手。

我有一个程序(假设是 A),它通过async_receive()无限循环等待传入数据。

现在我想从一个单独的进程(比如说B)控制程序A。

更准确地说,我想在 B 发出信号时终止程序 A。这样,io_service()程序 A 将被取消,因此程序 A 终止。

看来我应该在程序 A 中定义一个线程来等待来自 B 的信号。

我的问题是我怎么能收到B的信号?

我尝试使用message_queue(mq) ( boost/interprocess/ipc/message_queue)。所以,B 在 中放了一条消息,mq但是我如何通知程序 A 从 中读取数据mq?是否有可能mq在 en\dequeued 中的新消息时调用处理程序?

换句话说,我想使用 Boost 库从 B 中中断 A。如果你能给我一个提示,你会帮助我很多。

4

1 回答 1

0

有很多方法可以接收来自另一个进程的关闭信号,但最好的方法取决于您的应用程序。

如果您的应用程序已经在接受传入的连接,它可以侦听环回接口 (localhost),然后进程 B 可以连接并要求它关闭。

另一种方法是产生一个等待共享条件变量的线程。当进程B想要关闭进程A时,只要通知条件变量,进程A的等待线程就会醒来,做它的事情。

于 2013-11-06T22:21:28.287 回答