我有一個線程用於觀看Mac OS X上的文件系統事件,如果我100個文件複製到一個被監視的文件夾中出現多個回調,我顯然得到多個文件系統事件,因此多回調呼叫。我想知道這些回調調用是否被一個接一個地處理?或者每個事件調用一個操作系統線程,該線程又調用回調函數,在這種情況下,我們將有多個線程執行相同的回調函數?關於產品的同時
Q
關於產品的同時
0
A
回答
1
這取決於你使用觀看文件系統事件,機制。
每次訪問一個文件生成一個內核中的通知。
如果使用公共FSEvents API,過於頻繁的更新被合併到一個單一的通知。這種情況下,接收端是由一個run loop管理,即回調不稱爲在新的後臺線程,或OS線程的上下文中。它在您指定的事件循環中運行,通常是運行主事件處理循環的主線程。
如果直接打入/dev/fsevents
(見例如the OS X book),您可以通過一個得到調用線程一個所有的事件,通過一個調用返回的可能是多個事件。
同樣,如果您改爲使用BSD派生的kqueue
,如果事件頻繁發生,您將從kqueue
的調用中獲得多個事件。
在任何情況下,操作系統不會在新/ OS線程中運行你的回調,也不會神奇地複製你的線程監視的文件系統的活動,使他們能夠同時處理的事件。
相關問題
- 1. 關於產品的關鍵
- 2. 關於產品DispatcherUnhandledException
- 3. 產品,同時
- 4. 關於產品:開關
- 5. 關於產品的LINQ
- 6. 關於產品的NSMutableArray
- 7. 關於產品的strcmp
- 8. 關於產品的NSMutableArray
- 9. 關於產品的.htaccess
- 10. C++ - 關於產品的typedef
- 11. 關於產品的preg_replace
- 12. 關於產品在Python
- 13. 關於產品碳構建
- 14. 關於產品@property和@synthesize
- 15. 關於產品REG在Perl
- 16. 關於產品使用CELLID
- 17. 關於產品CronTrigger - 石英
- 18. 關於產品使用.NET
- 19. 關於產品X = Y ==ž
- 20. 關於產品裝配
- 21. 關於產品NullExceptionError在C#
- 22. 關於產品產量return語句
- 23. 關於產品的開發者證書
- 24. 關於產品的try catch語句
- 25. 關於產品的GetHashCode實現
- 26. 關於產品的CreateObject()在VB6/VBA
- 27. 關於產品的jQuery了slideDown
- 28. 關於產品的GridBagLayout在Java中
- 29. 關於產品的foreach和代表
- 30. 關於產品的WordPress插件