自旋锁

<a href="http://www.wiloon.com/wordpress/?p=10215">自旋锁/Spin lock</a>

排队自旋锁

<a href="http://www.wiloon.com/wordpress/?p=5496">排队自旋锁/Ticket Lock</a>

MCS锁

<a href="http://www.wiloon.com/wordpress/?p=5493">MCS锁/MCS Spinlock</a>

CLH锁

<a href="http://www.wiloon.com/wordpress/?p=10307">CLH</a>

差异:

从代码实现来看,CLH比MCS要简单得多。

从自旋的条件来看,CLH是在前驱节点的属性上自旋,而MCS是在本地属性变量上自旋。

从链表队列来看,CLH的队列是隐式的,CLHNode并不实际持有下一个节点;MCS的队列是物理存在的。

CLH锁释放时只需要改变自己的属性,MCS锁释放则需要改变后继节点的属性。

注意:这里实现的锁都是独占的,且不能重入的。

<a href="https://coderbee.net/index.php/concurrent/20131115/577">自旋锁、排队自旋锁、MCS锁、CLH锁</a>