Oops, clear running flag when a worker waits

上级 dbd13d5c
...@@ -70,6 +70,7 @@ uwq_worker::wait(void) ...@@ -70,6 +70,7 @@ uwq_worker::wait(void)
{ {
acquire(&lock); acquire(&lock);
uwq->tryexit(this); uwq->tryexit(this);
running = false;
cv_sleep(&cv, &lock); cv_sleep(&cv, &lock);
uwq->tryexit(this); uwq->tryexit(this);
release(&lock); release(&lock);
...@@ -182,7 +183,7 @@ uwq::trywork(void) ...@@ -182,7 +183,7 @@ uwq::trywork(void)
scoped_acquire lock1(&worker_[i].lock); scoped_acquire lock1(&worker_[i].lock);
proc* p = worker_[i].proc; proc* p = worker_[i].proc;
panic("uwq::trywork: untested"); //cprintf("uwq::trywork: untested\n");
acquire(&p->lock); acquire(&p->lock);
p->cpuid = mycpuid(); p->cpuid = mycpuid();
release(&p->lock); release(&p->lock);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论