Q:如果在park()后,才把guard设为0会怎样?
A:线程调用park后休眠,这时占用锁的那个线程可能打算释放锁而抢占cpu,但guard此时为1,未被设为0,因此陷入自旋,浪费cpu资源。
Q:一个线程将要park时,切换到了持有锁的线程,会发生什么?
A:锁被移交给这个将要park的线程,该线程又调用park,占着锁一直睡眠无人唤醒。
操作系统导论 p231问题
最新推荐文章于 2022-05-17 16:43:57 发布
Q:如果在park()后,才把guard设为0会怎样?
A:线程调用park后休眠,这时占用锁的那个线程可能打算释放锁而抢占cpu,但guard此时为1,未被设为0,因此陷入自旋,浪费cpu资源。
Q:一个线程将要park时,切换到了持有锁的线程,会发生什么?
A:锁被移交给这个将要park的线程,该线程又调用park,占着锁一直睡眠无人唤醒。