簡體   English   中英

POSIX線程和信號掩碼

[英]POSIX Threads and signal masks

有沒有辦法從另一個線程更改一個線程的信號掩碼? 我應該編寫一個不使用互斥體,信號量和條件變量,而僅使用信號的多線程C應用程序。

因此看起來像這樣:主線程將SIGUSR1發送到其進程,並且2個線程之一(不包括主線程)將響應該信號,並阻止SIGUSR1進入sigmask並進入睡眠狀態。 然后主線程再次發送SIGUSR1,另一個線程將響應,從其sigmask阻止SIGUSR1,從其他線程sigmask取消阻止SIGUSR1,因此它將再次響應SIGUSR1。

因此,基本上,每當主線程發送SIGUSR1時,其他兩個線程就會相互交換。

有人可以幫忙嗎?

您可能正在尋找從主線程調用的pthread_sigqueue(3) ,以及子線程中的sigwait(3)sigtimedwait(2) )。

線程只能修改自己的信號掩碼(通過pthread_sigmask() )。 如果要修改另一個線程的信號掩碼,則必須自己編寫代碼以要求另一個線程執行此操作。

信號被發送到此處的進程,因此kill()sigqueue()是要使用的函數。 后者將避免合並多個信號,而這可能會與kill()一起發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM