【发布时间】:2016-12-19 16:22:08
【问题描述】:
我在Qt 快速应用程序中使用asio(仅限独立标头)。
如果我理解正确,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 毫秒。我在文档中读到必须在每个poll() 之后调用asio::io_service.reset()。所以槽poll_ios()有如下代码:
void INandOUT::poll_ios()
{
// qDebug() << "poll_io signal";
m_io_service.poll_one();
m_io_service.reset();
}
这是调用 reset() 的正确方法吗?还是应该在他们完成任务后在每个处理程序中调用它?它安全吗?或者我可以放弃asio 事件吗?
【问题讨论】:
标签: c++ qt boost-asio qtquick2