0
我有一個模塊,管理我的應用程序中的計時器。該類基本上具有三個功能:ACE reactor timer管理線程安全嗎?
ACE_Reactor的實例由模塊在內部用於管理定時器。
- 調度計時器 - 調用ACE_Reactor :: schedule_timer()。 其中一個參數是一個回調函數,在定時器超時時調用。
- 取消計時器 - 調用ACE_Reactor :: cancel_timer()
在執行的私人計時器執行的反應器,從而調度/取消和超時回調在不同線程上執行。
ACE_Reactor::schedule_timer()收到一個堆allocatec結構(參數參數)。
當取消定時器或調用超時處理程序時,此結構後來被刪除。 但是由於取消和超時處理程序是在不同的線程中執行的,它看起來像是結構被刪除兩次的情況。
當調用超時處理程序時,確保定時器被取消不是reactor的責任嗎?
你檢查'cancel_timer'的結果嗎?這也有助於獲得有關管理刪除堆分配結構的方式的更多信息。它是否在處理程序的'handle_close'方法中被刪除? – 2010-01-18 21:48:41