有沒有人可以提供librt.so.1的timer_helper_thread()函數的一些信息。
我在我的應用程序中使用posix timer_create()函數來實現計時器功能,並且我使用SIEV_THREAD進行通知。當超時發生時,我可以在gdb中看到兩個線程正在創建。一個是我已經指定了啓動函數的線程,另一個是啓動函數是librt.so.1的timer_help_therad()的線程。即使在我的線程退出後,這兩個timer_helper_thread()也不退出。有人會告訴我什麼時候timer_helper_thread()退出並給它提供一些信息?有關librt.so.1的timer_helper_thread()函數的一些信息
0
A
回答
0
簡答:不要擔心;這是一個實現細節,當你的程序退出時它會自行清理。但是,如果你很好奇...
從glibc的的timer_create(2)
手冊頁:
SIGEV_THREAD: 當計時器到期時,調用sigev_notify_function就好像它是一個新的線程啓動功能。 (其中實現可能性這裏是每個計時器通知可能導致創建一個新的線程,或者是一個單獨的線程創建接收所有通知。)
而且也:
的SIGEV_THREAD的功能在glibc中實現,而不是在內核中實現。
因此,glibc(即librt.so)假定內核無法創建一個響應定時器事件的線程 - 它支持的所有功能都是發送信號。所以有人需要接收該信號並創建處理程序線程。如果您想要自己細化接收信號的細節,那麼您就不會使用SIGEV_THREAD,因此glibc不會打擾您,而只是爲了處理定時器事件而創建自己的線程。
此計時器助手線程持續時間從您呼叫timer_create()
的第一次,直到您的程序結束。除非你做了不尋常的事情,否則你不需要擔心;它會在你的程序退出後自行清理。它所做的唯一的事情就是等待一個定時器到期,所以它沒有使用任何額外的處理能力。此外,無論您創建了多少個定時器,看起來只會有一個幫助器線程。
0
@jander:你的評論在這裏很有趣「這個計時器幫助程序線程可以持續從第一次調用timer_create()直到程序結束。」 每次定時器超時都會創建線程。這與你提到的timer_helper_thread()相同嗎? 我有一個類似的帖子,我觀察到一個單獨的線程只爲timer_create()創建。這是timer_helper_thread()嗎? Ref:New thread on invocation of timer_create()
相關問題
- 1. 有關PEG所需的一些信息
- 2. 有關閃光燈的一些信息
- 3. 有關函數RegQueryInfoKey的詳細信息?
- 4. 給我一些關於REAPER的信息
- 5. 有關函數的輸入參數從另一個函數內的信息
- 6. 有關pygame的一些信息:'Group'對象沒有'rect'屬性
- 7. 有關創建Ubuntu包的.sh腳本的一些信息?
- 8. CGPDFDictionary提供一些有用的信息
- 9. 我需要一些有關dBase字段類型的信息
- 10. geochart - 如何添加有關區域的一些信息
- 11. Rails - 關於「N + 1」的更多信息
- 12. 有關linux信號的一些問題
- 13. 如何獲取有關C函數的調用者的信息?
- 14. 有關MacOS上的__dyld__dyld_start等函數的更多信息
- 15. 是否有最常用的Java API函數的一些統計信息?
- 16. 有關RDLC的信息
- 17. 有關dtype數組的信息
- 18. 如何在python中查找有關函數的信息?
- 19. Python:有關Python函數實現的信息
- 20. 獲取有關表值函數的信息
- 21. 有關變量函數的更多信息?
- 22. 獲取有關函數調用的詳細信息
- 23. 需要一些關於使用PERL的IRC BOTS的信息
- 24. 帶一些信息的iphone一般
- 25. 獲取有關SHA-1提交對象的信息?
- 26. 函數返回的信息
- 27. 1:m和m:m關係:給出關於後端列表中關聯元素的一些信息
- 28. 問一些關於glkit的函數?
- 29. Actionscript - Player.IO:有些信息?
- 30. SQL:統計所有與某些條件無關的信息
@jander ....謝謝jander ...我有一個更多的查詢來問你..自第一次超時發生後,我的進程的內存使用量將增加線程堆棧的大小(我可以通過我的linux機器上的「ulimit -s」找到),因爲這個線程是在運行時創建的...我是對的嗎? – abcd 2010-11-24 08:38:48