Używam (pojedynczego wątku) a boost::asio:io_service
do obsługi wielu połączeń TCP. Dla każdego połączenia używam parametru deadline_timer do przechwytywania limitów czasu. Jeśli którekolwiek z połączeń przekroczy limit czasu, nie mogę użyć żadnego z wyników innych połączeń. Dlatego chcę całkowicie zrestartować moje io_service. Pomyślałem, że wywołanie io_service.stop()
pozwoliłoby na wywołanie "zakończonych" procedur obsługi w kolejce i wywołanie procedur obsługi w kolejce z błędem.Wyczyść doładowanie :: asio :: io_service after stop()
Wygląda jednak na to, że moduły obsługi pozostają w kolejce i dlatego wywołanie io_service.reset()
i późniejszego io_service.run()
przywraca stare procedury obsługi. Czy ktoś może potwierdzić, że procedury obsługi rzeczywiście pozostają w kolejce, nawet po wywołaniu io_service.stop()
. A jeśli tak, jakie są możliwości pełnego zresetowania usługi io_, np. usunąć wszystkie kolejki obsługi?