簡體   English   中英

每個C POSIX線程是否都需要一個不同的Sigset以確保在屏蔽信號時的原子性?

[英]Do I need A Different Sigset For Each C POSIX Thread To Ensure Atomicity When Masking Signals?

如果我要屏蔽和取消屏蔽的信號在所有線程之間是公用的,是否可以對POSIX C中設置的信號使用一個全局變量傳遞給pthread_sigmask,或者每個線程應該有不同的sigset?

pthread_sigmask()的第二個參數是常量( const sigset_t *set )[表示不會修改set指向的內存],因此您可以聲明一個[可能是全局的,您認為是]變量,而無需實現任何線程鎖定機制在訪問它時都會被修改,因為它不會被修改。 所有線程將始終從中讀取相同的[consistent]值。

您可以聲明如下內容:

/* Global scope */
sigset_t g_set;

並將其傳遞給pthread_sigmask()

/* Assuming `g_set` is already properly set at this point and won't be modified in the future */
pthread_sigmask(how, &g_set, NULL);

暫無
暫無

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

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