io_service::reset
documentation指出reset()
必须后续调用run()
,run_one()
,poll()
或poll_one()
之前被调用。为什么必须调用io_service :: reset()?
问题:
- 为什么是这个必要吗? -
- 如果忽略此步骤,我可能会期望什么行为?
- 为什么此要求不足以保证
assert
被忽视?
一些背景:我完成调试检查调用poll()
反复无reset()
,并试图检查正在每次执行处理程序的预期数量的一些单元测试。看起来有足够的电话号码给poll()
,所有的处理程序最终都会按照预期的顺序执行,但它会比你想象的要多得多。正确调用reset()
可以解决这个问题,但我很想知道这是不是调用reset()
的唯一副作用,或者是否存在潜在的更糟糕的效果,如可能出现在多线程示例中的处理程序或效果。