互斥锁(mutex):确保同一时间只有一个线程访问数据。在访问共享资源前对互斥量进行设置(加锁),在访问完成后释放(解锁)互斥量。只有两个状态:加锁和不加锁状态。
读写锁(rw lock):与互斥锁相似,不过读写锁允许更高的并行性。
三种状态:
- 读模式下加锁
- 写模式下加锁
- 无锁状态。
一次只有一个线程可以战友写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。
自旋锁(spin lock):
忙则等待。 用于一下情况:锁被持有的时间短,而且线程并不希望在重新调度上花费太多成本。充分压榨计算机性能。