【发布时间】:2016-06-09 04:08:14
【问题描述】:
io_service::resetdocumentation 声明必须在后续调用run()、run_one()、poll() 或poll_one() 之前调用reset()。
问题:
- 为什么需要这样做? -
- 如果忽略此步骤,我会期待什么行为?
- 如果忽略此要求,为什么它不够重要,不足以保证
assert?
一些上下文:我完成了一些单元测试的调试,这些单元测试在没有reset() 的情况下重复检查了调用poll(),并试图检查每次执行的处理程序的预期数量。似乎对poll() 进行了足够多的调用,所有处理程序最终都会按照预期的顺序执行,但它需要的调用比您预期的要多。正确调用reset() 可以解决问题,但我很想知道这是否是不调用reset() 的唯一副作用,或者是否存在潜在的更糟糕的影响,例如丢弃处理程序或可能出现在多线程中的效果线程示例。
【问题讨论】:
标签: boost-asio