gpt4 book ai didi

linux - POSIX 线程中的互斥概念

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:41 26 4
gpt4 key购买 nike

谁能告诉我如何在 posix 线程中使用互斥锁。我们将互斥锁声明为 pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER..我们正在使用 pthread_mutex_lock(&mutex1) 来锁定关键代码。但我的问题是它锁定了什么我们没有指定要锁定的代码如果我有 4 个线程并且我希望线程 1 资源被锁定我怎么能告诉编译器我无法理解任何人都可以帮助我。什么是互斥量的真正用途等待答案..

最佳答案

这完全由您决定,pthreads 没有指定锁做什么或不保护什么。

例如如果您想保护变量“a”,则由您来确保对“a”的所有访问都在互斥锁(例如“a_lock”)的保护下发生。对于一个简单的(未经测试的)示例


static int a;
static pthread_mutex_t a_lock = PTHREAD_MUTEX_INITIALIZER;

/* Add argument to static variable a in a thread-safe manner and return the result. (In real life, for this kind of operation you could use an atomic operation) */
int increment_a(int i)
{
int res;
pthread_mutex_lock(&a_lock);
a += i;
res = a;
pthread_mutex_unlock(&a_lock);
return res;
}

也就是说,在硬件、操作系统、线程库或其他任何东西中,都没有指定您要保护的数据(上例中的变量“a”)与您的互斥锁之间的任何类型的关系用于实现所述保护(上面的互斥锁“a_lock”)。 pthread 库仅确保一次只有一个线程可以持有互斥量。

关于linux - POSIX 线程中的互斥概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385003/

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