线程同步的工具
- 原子操作
原子操作是同步简单的形式。它处理简单的数据类型。原子操作的优势它们不妨碍竞争的线程。 - 内存屏障和Volatile
- 锁
锁是最常用的同步工具。你可以是使用锁来保护临界区(critical section),这些代码段在同一时间只能允许被一个线程访问。
Lock
Mutex(互斥锁)
Recursive lock(递归锁)
Read-write lock(读写锁)
Distributed lock (分布锁)
Spin lock(自旋锁)
Double-checked lock(双重检查锁) - 条件
条件是信号量的另外一个形式,它允许在条件为真的时候线程间互相发送信号。
条件通常被使用来说明资源可用性,或用来确保任务以特定的顺序执行。当一个线程测试一个条件时,它会被阻塞直到条件为真。它会一直阻塞直到其它线程显式的修改信号量的状态。