내 응용 프로그램에서 타이머를 관리하는 모듈이 있습니다. 이 클래스는 다음과 같은 세 가지 기능을 기본으로 제공합니다.ACE 리액터 타이머 관리 스레드는 안전합니까?
ACE_Reactor 인스턴스는 타이머를 관리하기 위해 모듈에서 내부적으로 사용됩니다.
- 일정 타이머 - ACE_Reactor :: schedule_timer()를 호출합니다. 인수 중 하나는 타이머 경험에 따라 호출되는 콜백입니다.
- 타이머를 취소는 -, ACE_Reactor :: cancel_timer()를
실행의 개인 타이머 실행 반응기 호출 때문에 일정/취소하고 제한 시간 콜백이 다른 스레드에서 실행됩니다.
ACE_Reactor::schedule_timer()은 힙 할당 구조 (arg 인수)를받습니다.
이 구조는 나중에 타이머를 취소하거나 시간 제한 처리기가 호출 될 때 삭제됩니다. 그러나 취소 및 타임 아웃 처리기가 다른 스레드에서 실행되므로 구조가 두 번 삭제되는 경우가있는 것처럼 보입니다.
타임 아웃 처리기를 호출 할 때 타이머가 취소되도록하는 것이 원자로의 책임이 아닙니까?
'cancel_timer' 결과를 확인합니까? 또한 힙 할당 구조의 삭제 관리 방법에 대한 정보를 얻는 데 도움이됩니다. 핸들러의'handle_close' 메소드에서 삭제됩니까? –