[英]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.