0
nodejs中的setTimeout是用c語言庫libev ev_timer實現的。 ev_timer如何工作?ev_timer是如何在nodejs中使用的libev中實現的
它使用輪詢實現嗎?如果我將超時設置爲30秒,是否每個毫秒都有進程檢查等待超時?
nodejs中的setTimeout是用c語言庫libev ev_timer實現的。 ev_timer如何工作?ev_timer是如何在nodejs中使用的libev中實現的
它使用輪詢實現嗎?如果我將超時設置爲30秒,是否每個毫秒都有進程檢查等待超時?
libev已被libuv取代。
定時器API被示here
基本上系統中的所有其它非IO活動完成後的事件循環無二輪詢。目前,它將有一個或多個I/O事件未決,以及一個或多個定時器事件等。投票的輸入是以這樣一種方式製作的,即超時是註冊時間事件中最少的。這與事件循環維護的相對時間字段一起幫助找出定時器回調被觸發的正確時間。
簡而言之,通過輪詢呼叫將等待的時間委託給OS,而不是通過定期喚醒和重新檢查。
希望這會有所幫助。