condition-variable

    4热度

    3回答

    最近我一直在使用pthreads,还有一件事情我还是不太明白。我知道条件变量的设计是为了等待某个特定的条件变为现实(或者是'发信号')。我的问题是,这与正常的互斥体有什么不同? 从我的理解,不是条件变量只是一个互斥锁与附加逻辑来解锁另一个互斥锁(并再次锁定),当条件成为真? 伪代码示例: mutex mymutex; condvar mycond; int somevalue = 0; o

    3热度

    2回答

    我在下面的代码中遇到错误。 recursive_mutex m_RecurMutex; condition_variable cond; unique_lock<recursive_mutex> lock(m_RecurMutex); cond.wait(lock); // Error Here. 造成此错误的原因是什么?

    15热度

    1回答

    这里是使用条件变量的典型方式: // The reader(s) lock(some_mutex); if(protected_by_mutex_var != desired_value) some_condition.wait(some_mutex); unlock(some_mutex); // The writer lock(some_mutex); protecte

    0热度

    3回答

    我希望有两个线程。第一个线程1偶尔会调用下面的伪功能: void waitForThread2() { if (thread2 is not idle) { return; } notifyThread2IamReady(); // i.e. via 1st condition variable Wait for thread2 to finish

    1热度

    3回答

    我当前对条件变量的理解是所有被阻塞的(等待的)线程都被插入到一个基本的FIFO队列中,当signal()被调用时,第一个队列被唤醒。 有没有什么办法可以修改这个队列(或创建一个新的结构)来执行优先级队列呢?我一直在考虑这个问题,但大多数解决方案最终都受到C.V.和互斥体固有的队列结构的阻碍。 谢谢!

    1热度

    3回答

    每个Java对象(及其类)都有一个关联的监视器。在pthread术语中,Java监视器相当于可重入互斥和条件变量的组合。 对于锁定,Win32 API提供Mutex对象(可重入但重量级)和关键部分(不可重入但轻量级)。它还提供了其他同步结构,例如Semaphores和Events,但没有明确的条件变量概念。 如果我正在编写JVM,我怎么能使用这些Win32概念来实现Java监视器?

    2热度

    3回答

    得到假设我有3个POSIX线程一个C程序,共享的全局变量,互斥锁,和条件变量,其中两个是执行以下伪码: ...process data... pthread_mutex_lock(&mutex); variable = data_ptr; pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); 而第三个运行: while(1)

    3热度

    3回答

    对于某些并发代码,我想将一堆信号连接成一个电路。在.NET中,我们可以对一组信号执行WaitAll或WaitAny。我想做这样的事情: WaitAny (WaitAll (c1, c2), WaitAll (c3, c4)) ; 不幸的是,图书馆不支持将这些操作组合成更复杂的树。我的问题是(1)有没有办法在.NET中做到这一点? (2)在任何语言中是否都有一个精巧的库? [编辑:科里要求更多信