2018-08-07
锁的公平性
-
产生
跟锁的无饿死性质有关
虽然锁的无饿死性质保证每个调用lock()的线程最终都会进入关键区,但是并没有保证线程花费多久才会进入关键区。
-
解决
将lock方法分成两个部分:
(1)doorway区:在doorway区的执行花费有限步;
(2)waiting区:在waiting区的执行花费无限步;
-
定义
先到先服务锁(锁的公平性)
使用happens-before偏序关系来定义很多概念
互斥
-
先到先服务锁
如果线程A总是在线程B进入其doorway区前退出其doorway区,则线程A不可能被B赶超: