相关疑难解决方法(0)

POSIX线程:条件变量 - 重点是什么?

我最近一直在和pthreads合作,而且还有一件小事我还是不太了解.我知道条件变量旨在等待特定条件成立(或"发信号").我的问题是,这与普通的互斥体有何不同?

根据我的理解,当条件变为真时,条件变量不仅仅是具有额外逻辑的互斥锁来解锁另一个互斥锁(并再次锁定它)?

Psuedocode示例:

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);
}
Run Code Online (Sandbox Code Playgroud)

因此,此示例中的cond_wait解锁mymutex,然后等待mycond发出信号.

如果是这样,那么条件变量不仅仅是具有额外魔力的互斥量吗?或者我对互斥和条件变量的基本基础有误解?

pthreads condition-variable

4
推荐指数
2
解决办法
8172
查看次数

标签 统计

condition-variable ×1

pthreads ×1