我在Qt
快速应用程序中使用asio
(仅限独立标题)。QTimer with asio :: io_service.poll_one()或poll()
由于Qt和asio都有自己的事件循环,如果我理解正确,我使用QTimer
信号调用保存我的asio::io_service
对象的类。
QTimer *timer_io = new QTimer();
QObject::connect(timer_io, SIGNAL(timeout()), &my_INandOUT, SLOT(poll_ios()));
timer_io->start(IO_TIMER);
我已将IO_TIMER设置为100 ms。我已阅读文档asio::io_service.reset()
必须在每个poll()
之后调用。因此插槽poll_ios()
具有下面的代码:
void INandOUT::poll_ios()
{
// qDebug() << "poll_io signal";
m_io_service.poll_one();
m_io_service.reset();
}
是正确的方式来调用reset()
?还是应该在每个处理程序完成任务后再调用它?安全吗?或者我可以放松asio
事件?
我做的第一件事'asio'是'async_connect',和我的处理程序永远不会回来如果我不使用'm_io_service.reset()'。谢谢,我会看看QNetworkAccessManager。 – jmatthieu