linux 定时器_定时器: Nodejs 中的 timers
在看 Node http 模塊文檔的時候, 才留意到?server.timeout?這個屬性, 本想簡單介紹一下, 但是在梳理過后發現關于?timeout?有龐大的內容支撐:?server.timout -> node core timers -> uv timers -> linux msleep/hrtimer -> clocksource -> tsc -> cmos rtc -> clock cycle, 所以拆分成幾部分大致做下介紹, 期望定時器系列結束之后, noder 能夠大致明白:?clock cycle?是如何驅動 linux 的?msleep/hrtimer;linux 的 timers 與 uv timers 的關系;node timers 與 uv timers的關系。
前面敘述了計算機中timer實現原理,libuv層如何借助epoll_wait實現timer的機制,現在講下Nodejs應用層相關的timers。
數據結構與調用關系
從上至下各層的數據結構有:
考慮一下場景,三者之間的數據模型是怎樣的
setTimout(fn1(){},?1000);setTimout(fn2(){},?1000);
setTimout(fn3(){},?2000);
setTimout(fn4(){},?2000);
setTimout(fn5(){},?3000);
setTimout(fn6(){},?3000);
一圖勝千言(點擊放大)
關鍵函數:
關鍵點:
Nodejs 的 timers們
Nodejs 提供的timers們,除了給用戶使用,其實自身也在大量使用。對于Node來說,timer應該算是一種保護機制,先看下Node自身哪里在用吧。
以上模塊或模塊中的方法都是系統資源的重度消耗者,而nodejs 作為server端的編程語言,需要特別留意資源的開銷,所以在有資源開銷地方一般都會Timer守護者,以便及時的釋放資源。
server.timeout
本次關于定時器的主題,來自網上關于socket hang up與connect ECONNREFUSED的討論,至此還沒有涉及這方面內容。此內容將會涉及到timer以外的,socket, tcp等層面的內容,該內容相對獨立,所以會作為定時器最后一節,放到下次討論。
總結
以上是生活随笔為你收集整理的linux 定时器_定时器: Nodejs 中的 timers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [MySQL 5.6优化] --o
- 下一篇: 使用WinIO库实现保护模式下的IO和内