我是多线程编程和进程间通信机制的新手。
我有一个程序(比方说A)在无限循环中通过async_receive()
等待传入数据。
现在我想从一个单独的过程控制程序A(比方说B)。
更确切地说,我想在B发信号时终止程序A.这样,程序A中的io_service()
将被取消,因此程序A终止。
似乎我应该在程序A中定义一个线程来等待来自B的信号。
我的问题是我怎么能收到B的信号?
我尝试使用message_queue
(mq)(boost/interprocess/ipc/message_queue
)。那么,B在mq
中添加了一条消息,但我如何通知程序A从mq
读取数据?可能mq
在en \ dequeued中发送新消息时会调用处理程序吗?
换句话说,我想使用Boost库从B中断A.如果你能给我一个提示,你会帮助我很多。
答案 0 :(得分:0)
有很多方法可以接收从另一个进程关闭的信号,但最好的方法取决于您的应用程序。
如果您的应用程序已经接受传入连接,它可以侦听环回接口(localhost),然后进程B可以连接并要求它关闭。
另一种方法是生成一个等待shared condition variable的线程。当进程B想要关闭进程A时,它只能通知条件变量,并且进程A的等待线程将被唤醒并执行它。