fs-poll是不相依平台、基於polling機制的實作,只能監測單一檔案
內部使用uv_timer_t來完成uv_fs_poll_start原始碼
呼叫使用者程式碼的關鍵function
fs-event則是平台相依的,一般可用來監控某個資料架下的所有檔案,部分OS支援遞迴性監控
相關定義可在Makefile.am找到
- 在Linux使用inotify
- 在OSX使用fsevent
- WINNT使用ReadDirectoryChangesW
- 在BSD使用kqueue
由於uv只提供兩種events UV_RENAME
和 UV_CHANGE
,推測除了重新命名以外都是CHANGE事件
此外兩者最大不同為callback不一樣,poll回傳stat_t結構,event回傳事件
雖然events直接使用kernel提供的功能,且為事件驅動,顯然較高效
poll並不見得就比較heavy,但latency會受到polling interval所限制。