定時器

1/16ページ

epoll定時器實現系列文章:高效能定時器實現的三種方式—升序連結串列,時間輪,最小堆(★firecat推薦★)

就是說,有N多個定時器,如何來實現高效到點執行定時函式的問題。 在開發Linux網路程式時,通常需要維護多個定時器,如維護客戶端心跳時間、檢查多個資料包的超時重傳等。 定時器的結構有多鍾比如連結串列式,最小堆,時間輪等。在不同應用場景下使用哪種需要考慮效率和複雜度? 時間輪定時器1.時間輪定時器有什 […]

高效能定時器時間輪的實現

時間輪的概念     關於定時器有很多種,有基於升序的定時器時間連結串列,但是這種連結串列存在效率的不足,就是當插入定時器的時候時間複雜度是O(n).今天,我們來認識一下高效能定時器時間輪。    如上圖所示,就是一個時間輪的基本輪廓。一個輪子上有很多槽slot,每一個槽指向一個定時器連結串列,這個 […]

linux網路程式設計二十二:高效能定時器之時間輪

之前我們提到,基於排序連結串列的定時器存在一個問題:新增定時器的效率偏低。下面我們討論的時間輪解決了這個問題。 如圖,這是一種簡單的時間輪: 輪中的實線指標指向輪子上的一個槽(slot),它以恆定的速度順時針轉動,每轉動一步就指向下一個槽,每次轉動稱為一個滴答(tick)。 一個滴答的時間稱為是間輪 […]

關於Linux下的高精度定時器

作業系統的預設定時器的精度是很低的,比如在windows下呼叫Sleep(20)延時20毫秒,實際上80毫秒都可能。 做媒體伺服器,免不了需要高精度的定時器,比如語音會議,需要很精確地每20毫秒進行一次混音並通過rtp傳送。 我們的媒體庫原來只在windows下實現,使用了windows寫的高效能定 […]

JavaScript定時器

簡介 JavaScript 中有兩種定時器:一種是超時定時器,用來在指定時間之後執行一段程式碼,這種定時器用 setTimeout() 開啟,用 clearTimeout() 結束;另一種是迴圈定時器,用來在指定週期迴圈執行一段程式碼,這種定時器用 setInterval() 開啟,用 clearI […]

詳解TCP的四種定時器

詳解TCP的四種定時器 在TCP協議中有的時候需要定期或者按照某個演算法對某個事件進行觸發,那麼這個時候,TCP協議是使用定時器進行實現的。在TCP中,會有四種定時器: (1)重傳定時器 (2)堅持定時器 (3)保活定時器 (4) 時間等待計時器 這四個定時器都有各自的具體作用。 一:重傳定時器 重 […]