2016-12-14 100 views
2

在我的程序中,我需要在timer(timer_create())過期時執行一些操作。我想通過產生一個新的線程來執行這個動作。所以我想知道在信號處理程序中創建線程是否安全?在信號處理程序中創建線程

+0

用'.sigev_notify = SIGEV_THREAD'通過'struct sigevent'調用'timer_create()'。 – EOF

回答

2

信號處理程序可能不會調用非重入函數。你應該看看你的o/s文檔,但創建一個線程不太可能是可重入的。在linux上,man -s7 signal爲您提供了一個安全調用函數的列表,其中不包含pthread中的任何內容。

真的,所有的信號處理程序都應該爲主代碼或信號處理線程設置一個標誌來讀取。不僅如此,還有風險。