簡體   English   中英

為什么需要在多線程程序中使用Pthread_sigmask來確保set處理程序正在處理信號?

[英]Why do I need to use Pthread_sigmask in multithreaded programs to assure that a signal is being handled by the set handler?

我有一個多線程程序,該程序需要每25ms處理一次setitimer()發送的Linux信號SIGVTALRM。 但是我很困惑。 我不知道為什么需要使用Pthread_sigmask()來阻止和取消阻止信號。 無論在給定的時刻正在處理哪個線程,發送信號時都不會處理信號嗎?

無論在給定的時刻正在處理哪個線程,發送信號時都不會處理信號嗎?

在單線程程序中,可以。 但是在多線程程序中,POSIX沒有指定哪個線程將接收您發送的信號SIGVTALRM 因此, pthread_sigmask()通常用於阻止感興趣的信號並處理在專用線程中提取那些信號sigwait() 這可能是您使用或要求使用pthread_sigmask()

鏈接的POSIX手冊還提供了一個簡單的示例,說明了如何完成此操作。

暫無
暫無

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

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