gpt4 book ai didi

pthreads - 在一个线程中锁定互斥体并在另一个线程中解锁它

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

这段代码正确且可移植吗?

void* aThread(void*)
{
while(conditionA)
{
pthread_mutex_lock(mutex1);
//do something
pthread_mutex_unlock(mutex2);
}
}

void* bThread(void*)
{
while(conditionB)
{
pthread_mutex_lock(mutex2);
//do something
pthread_mutex_unlock(mutex1);
}
}

在实际的应用程序中,我有三个线程 - 两个用于向数组添加值,一个用于读取它们。我需要第三个线程在其他线程之一添加新项目后立即显示数组的内容。

最佳答案

事实并非如此。如果线程 A 在线程 B 到达 mutex_lock(2) 之前到达 mutex_unlock(2),则您将面临未定义的行为。您也不能解锁另一个线程的互斥体。

pthread_mutex_lock Open Group Base Specification这么说:

If the mutex type is PTHREAD_MUTEX_NORMAL [...] If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, undefined behavior results.

关于pthreads - 在一个线程中锁定互斥体并在另一个线程中解锁它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608843/

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