gpt4 book ai didi

c - 我是否需要为每个 C POSIX 线程使用不同的 Sigset 以确保屏蔽信号时的原子性?

转载 作者:太空狗 更新时间:2023-10-29 12:00:33 28 4
gpt4 key购买 nike

如果我想要屏蔽和取消屏蔽的信号在所有线程之间是通用的,我可以使用一个全局变量作为 POSIX C 中的信号集以传递给 pthread_sigmask,还是每个线程应该有不同的信号集?

最佳答案

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);

关于c - 我是否需要为每个 C POSIX 线程使用不同的 Sigset 以确保屏蔽信号时的原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687749/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com