(단일 스레드) boost::asio:io_service
을 사용하여 많은 TCP 연결을 처리하고 있습니다. 각 연결에 대해 나는 deadline_timer를 사용하여 타임 아웃을 잡습니다. 연결 시간이 초과되면 다른 연결의 결과를 전혀 사용할 수 없습니다. 따라서 io_service를 완전히 다시 시작하고 싶습니다. io_service.stop()
을 호출하면 대기열의 "완료된"처리기를 호출 할 수 있고 오류가있는 대기열의 처리기를 호출 할 수 있다고 생각했습니다.stop() 후 boost :: asio :: io_service 지우기
그러나 처리기가 대기열에 남아있는 것처럼 보이므로 io_service.reset()
이상을 호출하면 io_service.run()
은 이전 처리기를 다시 가져옵니다. 누구든지 io_service.stop()
이 호출 된 후에도 처리기가 실제로 대기열에 남아 있음을 확인할 수 있습니다. 그렇다면 io_service를 완료 할 수있는 가능성은 무엇입니까? 대기중인 모든 처리기를 제거 하시겠습니까?