我正在实现一个条件变量的等待操作。我有我的条件变量的结构。到目前为止,我的结构有一个监视器,一个队列和一个自旋锁。但我不确定一个条件变量本身是否应该有一个队列。我通知如下所示:做条件变量是否有队列?
void uthread_cv_notify (uthread_cv_t* cv) {
uthread_t* waiter_thread;
spinlock_lock(&cv->spinlock);
waiter_thread = dequeue (&cv->waiter_queue);
if(waiter_thread)
{
uthread_monitor_exit(cv->mon);
uthread_stop(TS_BLOCKED);
uthread_monitor_enter(cv->mon);
spinlock_unlock(&cv->spinlock);
}
}
但我不知道如果在一个通知函数或等待函数我应该入队和出队在显示器的等待队列?
谢谢
所以你说显示器的队列就够了,我不需要另外一个队列来处理我的条件变量? – BBB 2012-03-28 20:05:00
是的。如果您正确实施它,则不需要为条件变量本身设置单独的队列。 – Neo 2012-03-28 21:19:56