我正在实现条件变量的等待操作。我的条件变量有一个结构。到目前为止,我的结构有一个监视器、一个队列和一个自旋锁。但我不确定条件变量本身是否应该有一个队列。我的通知如下所示:
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);
}
}
但我想知道在通知函数或等待函数中我是否应该在监视器的等待队列中入队和出队?
谢谢