qunlock()

qunlock()

概要

実装

   65: void
   66: qunlock(QLock *q)
   67: {
   68:         Proc *p;
   69: 
   70:         lock(&q->use);
   71:         p = q->head;
   72:         if(p){
  • キューの先頭プロセスpを取り出す.
   73:                 q->head = p->qnext;
   74:                 if(q->head == 0)
   75:                         q->tail = 0;
   76:                 unlock(&q->use);
  • ロックを解放し,プロセスpをレディ状態にして,リターンする.
  • 詳細はunlock()を参照
  • 詳細はready()を参照
   77:                 ready(p);
   78:                 return;
   79:         }
   80:         q->locked = 0;
   81:         unlock(&q->use);
   82: }