我正在使用zmqpp的ZeroMQ C ++绑定来构建PUB / SUB通信。
在订阅方,有2个主题 - mainThread
和pollingThread
。
pollingThread
包含对zmqpp::poller::poll(zmqpp::poller::wait_forever)
的阻止调用。
如何,从mainThread
开始,我可以中断/取消pollingThread
对poll()
的来电吗?
EDIT1:我正在使用std::thread
,所以I can't interrupt the thread。
EDIT2:这基本上是pollingThread
的功能。
void pollingThread()
{
while (threadCanRun())
{
// wait indefinitely for a new message
if (mySocketPoller->poll())
{
functionToCallWhenAMessageArrives();
}
}
}
答案 0 :(得分:2)
IMO建议的方法是依靠消息传递来处理这个问题。
这意味着:
poll()
。poll()
。请注意,建议使用此解决方案时,需要更改代码位。
if (mySocketPoller->poll())
{
if (mySocketPoller->has_input(my_pair_socket))
{
// interrupted.
}
functionToCallWhenAMessageArrives();
}