条件変数の待機操作を実装しています。条件変数の構造体があります。これまでのところ、私の構造体にはモニター、キュー、およびスピンロックがあります。しかし、条件変数がそれ自体でキューを持つべきかどうかはわかりません。私の通知は次のようになります:
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);
}
}
しかし、通知機能と待機機能のどちらで、モニターの待機キューにエンキューおよびデキューする必要があるのでしょうか。
ありがとう