在重用IO_服务之前,我想删除它的所有处理程序。这可能吗?
asio::io_service . 在每个测试用例之间,我想从全局清除处理程序 io_service . 我以为 io_service::reset 我想那样做,但事实并非如此。 reset() 只允许
asio::io_service
io_service
io_service::reset
reset()
我只需要为单元测试做这些,这样任何疯狂的黑客都可以工作。
这个 deadline_timer 成员变量。这个 是我正在测试的代码的一部分,因此我无法更改它的构造方式。我掌握了它的位置 io_服务 截止时间计时器 的 get_io_service
deadline_timer
io_服务
截止时间计时器
get_io_service
嗯,我为此绞尽脑汁了几天,想出了一个可行的解决办法。它是所有黑客之母。
void clear( boost::asio::io_service& service ) { service.stop(); service.~io_service(); new( &service ) boost::asio::io_service; }
我不确定这对于生产代码来说有多安全。但到目前为止,它似乎是有效的(没有错误,没有奇怪的行为)。