- 共享内存:线程可以直接访问进程的内存空间。数据共享的访问通常需要同步机制来防止出现竞争状态。
- 互斥锁:为了控制对共享资源的访问,保证在同一时间只有一个线程访问共享资源。
- 读写锁:允许多个线程同时读取一个资源,但读取时需要独占访问(效率比互斥锁高)。
- 条件指标:允许一个或线程在某个条件前发生多个睡眠状态,等待另一个线程在该条件上发出通知或广播。
- 信号量:可以用于限制对共享资源的访问,也可以用于线程间的同步。
- 事件(event):允许一个线程通知一个或多个等待的线程某个事件已发生。
- 屏障(barrier):允许多个线程等待,直到所有线程都已经达到某个同步点,然后再一起继续执行。
- 线程局部存储(TLS):为每个线程提供独立的数据副本,避免了同步问题,但不一致用于线程间的数据共享。
- 原子操作:利用CPU提供的原子指令集来进行消耗加锁的线程安全操作。