@walkor,最近在開發(fā)一個新產(chǎn)品,用戶連接后會創(chuàng)建一個對象,這個對象會啟動一個定時器,定時器時間到了會判斷用戶超時,如果在時間范圍內(nèi)用戶訪問了對象,則定時器會被刪除,因?yàn)槲铱戳硕〞r器使用注意項(xiàng),有2個問題想請教下
1、如果我對象里面自己刪除定時器,定時器是不是還存在,這個對象我存儲在globalData里面
2、注意事項(xiàng)說了定時器不能跨進(jìn)程刪除,例如a進(jìn)程設(shè)置的定時器無法在b進(jìn)程直接調(diào)用Timer::del接口刪除,我的客戶端從哪個進(jìn)程訪問的,我沒有辦法判斷,如果客戶端連接后刪除對象里面的定時器是不是代表不能夠刪除成功
PS:請W大大多多指導(dǎo)
定時器里可以刪除自己。
你的這個最簡單的方法是設(shè)置一個全局定時器,每秒跑一次,輪詢所有連接檢查是否超時,不用考慮定時器增加刪除問題??梢詤⒖际謨赃@個做法 http://doc.workerman.net/faq/heartbeat.html
大佬,我這個基本上每個對象都會有一個定時器,也就是說例如我A用戶通過進(jìn)程1創(chuàng)建一個對象并且啟動定時器,我B用戶通過進(jìn)程2創(chuàng)建一個對象并且啟動定時器,可能我下次A用戶連接是走的進(jìn)程2,這個時候我對象里面的定時器按照注意事項(xiàng)是不是就沒有辦法刪除,因?yàn)檫@個對象是在進(jìn)程1里面創(chuàng)建并且啟動的定時器
感覺W大大周末還抽空回答我的問題,那如果我對象被銷毀后我的定時器是不是還一直存在,或者說我在對象里面刪除定時器可以解決這個問題嗎?或者能不能指導(dǎo)下我怎么解決這種問題
刪除定時器只能調(diào)用Timer::del,和對象是否銷毀沒有關(guān)系。只要在對的進(jìn)程內(nèi)調(diào)用Timer::del就可以刪除這個進(jìn)程的定時器。