0
pthread可以分離嗎?線程可以在不停止主進程的情況下被操作系統殺死?可以分離pthread die嗎?
pthread可以分離嗎?線程可以在不停止主進程的情況下被操作系統殺死?可以分離pthread die嗎?
如果你編程一個分離的線程死後做它的工作,那麼它會死。在完成其工作後,該功能可以簡單地結束或致電pthread_exit
。
您可以通過發送信號pthread_kill
或使用全局標誌或IPC形式(例如管道或消息隊列)來從另一個線程中終止分離的線程。請注意,「殺死」這個詞在英語和節目的多重含義之間是不明確的。該線程需要編程以對任何使用的通知機制作出反應。例如,應該爲線程安裝信號處理程序,並且使用pthread_kill
或pthread_sigqueue
發送的非進程範圍信號(例如SIGUSR1)。最後pthreads有一個取消機制,你可以使用pthread_cancel
和相關的調用。在所有這些場景中,重點是必須對線程進行編程以優雅地處理請求,但「分離」並不意味着「不可訪問」。
如果信號的處置停止,繼續或終止它將影響整個過程而不是單個線程。
'pthread_kill'不會殺死任何東西,就像'kill'不會殺死任何東西。它發送一個信號。一些信號具有**整個進程的**默認行爲終止**(從來沒有一個線程);一個('SIGKILL')總是導致進程終止。如果沒有任何線程從啓動函數返回,調用'pthread_exit',或者作用於取消請求,就沒有辦法讓任何線程「死掉」。 –
我知道。我下班。稍後我會給出更完整的答案。 – Duck
謝謝鴨子。我正在尋找一個線程是否可以在沒有父進程停止的情況下意外停止。 – CoryC