io_service::reset
documentation指出reset()
必須後續調用run()
,run_one()
,poll()
或poll_one()
之前被調用。爲什麼必須調用io_service :: reset()?
問題:
- 爲什麼是這個必要嗎? -
- 如果忽略此步驟,我可能會期望什麼行爲?
- 爲什麼此要求不足以保證
assert
被忽視?
一些背景:我完成調試檢查調用poll()
反覆無reset()
,並試圖檢查正在每次執行處理程序的預期數量的一些單元測試。看起來有足夠的電話號碼給poll()
,所有的處理程序最終都會按照預期的順序執行,但它會比你想象的要多得多。正確調用reset()
可以解決這個問題,但我很想知道這是不是調用reset()
的唯一副作用,或者是否存在潛在的更糟糕的效果,如可能出現在多線程示例中的處理程序或效果。