【发布时间】:2014-02-15 08:38:12
【问题描述】:
用 C++ 编写我有一个线程,它使用 zmq poll 方法来发现何时有新事件要处理,这工作正常。我想要的是这个线程退出,同时在没有更多事件预期的情况下很好地清理。
我可以在其中放置一个条件,而不是无限的 while 循环,但它需要 REQUEST_TIMEOUT_MS 才能到达那里。所以我的问题是,中断程序退出轮询的最佳方法是什么?
void * Requester::recieve_thread(void *arg) {
zmq::socket_t * soc = (zmq::socket_t *) arg;
zmq::pollitem_t items[] = { { *soc, 0, ZMQ_POLLIN, 0 } };
while (1) {
zmq::poll(&items[0], 1, REQUEST_TIMEOUT_MS);
if (items[0].revents & ZMQ_POLLIN) {
// process the event
}
}
// clean up
}
【问题讨论】:
标签: c++ multithreading zeromq