一、读写锁使用

读锁:共享锁(多个线程可以同时读)
写锁:独占锁(仅一个线程可以写)
读写互斥。
使用state记录两个锁状态。(高16位:记录读锁。低16位记录写锁)

锁降级(在写锁期间,获取读锁),是为了保证数据可见性。

二、原理分析