gpt4 book ai didi

c - 是否有必要使 pthread_mutex_t 变量可变?

转载 作者:行者123 更新时间:2023-12-02 06:47:01 24 4
gpt4 key购买 nike

在 java 中,我们通常将锁变量设为最终静态,这样它就只有一个副本存在(虽然我记得读过,即使是静态变量也可以复制到两个方法的调用堆栈中!)

但是我在处理C和数据的同步。我已经声明了一个 pthread_mutex_t 变量,N 个线程将在该变量上锁定以访问公共(public)资源。

我不确定这个变量是否是重复证明(Java 中的静态变量的问题,它可能会或可能不会被复制到两种方法的调用堆栈中)。因为如果它们被编译器复制,那么我担心锁定可能无法工作。那么我们是否需要像“volatile”这样更激进的访问修饰符来使它真正成为单一的呢?

最佳答案

不仅没有必要; 不允许pthread_mutex_... 函数的参数具有类型 pthread_mutex_t * 并且需要一个指向 pthread_mutex_t 对象的有效指针。指向 volatile pthread_mutex_t 的指针不会像指向 const pthread_mutex_t 的指针那样自动转换,因为它在需要不合格指针的地方不可用。您可以通过强制转换来转换它,但这样您就会有违反函数约定的未定义行为。

关于c - 是否有必要使 pthread_mutex_t 变量可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702700/

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