gpt4 book ai didi

pthreads - POSIX 线程 : Condition Variables - what's the point?

转载 作者:行者123 更新时间:2023-12-03 18:08:43 25 4
gpt4 key购买 nike

我最近一直在使用 pthreads,但我仍然不太明白一件小事。我知道条件变量旨在等待特定条件实现(或“发出信号”)。我的问题是,这与普通互斥锁有什么不同?

据我所知,条件变量不只是一个带有附加逻辑的互斥锁,当条件变为真时可以解锁另一个互斥锁(并再次锁定它)?

伪代码示例:

mutex mymutex;
condvar mycond;
int somevalue = 0;

onethread()
{
lock(mymutex);

while(somevalue == 0)
cond_wait(mycond, mymutex);

if(somevalue == 0xdeadbeef)
some_func()

unlock(mymutex);
}

otherthread()
{
lock(mymutex);

somevalue = 0xdeadbeef;

cond_signal(mycond);

unlock(mymutex);
}

所以在这个例子中 cond_wait 解锁 mymutex ,然后等待 mycond被告知。

如果是这样,条件变量不就是具有额外魔法的互斥体吗?还是我对互斥锁和条件变量的基本知识有误解?

最佳答案

两种结构完全不同。互斥锁旨在提供对某种资源的序列化访问。条件变量旨在允许一个线程通知其他线程某个事件已经发生。

关于pthreads - POSIX 线程 : Condition Variables - what's the point?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355223/

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