我想使用select()從其他服務器接收更新併發送定期消息。考慮以下設置:在套接字編程的select()中重新啓動定時器
while(1){ select(... timeout = 5 seconds); //一些其他代碼}
如果我在t = 2時秒接收更新,然後的select()將返回與相應的語句將被執行。當下一個循環開始時,超時將再次設置爲5秒。但是,它應該是5 - 2 = 3秒。有沒有辦法在正確的時間更新計時器?
我想在select()之前手動啓動定時器righr,但是這個定時器可能與select()中使用的定時器不同步。並會導致其他潛在的問題。
我在windows機器上編碼,但程序將在Linux上測試。那麼每次重新設置超時會更好一些,這樣可以避免移植問題? – whileone 2013-04-24 01:20:58
是的,你可以這樣做(如@MichalRus建議)。或者,您可以創建一個單獨的線程來執行定期處理。該線程可以只休眠5秒,然後在循環中執行一些操作。 – jxh 2013-04-24 01:41:51
有你。謝謝! – whileone 2013-04-24 02:22:16