Linux 线程间同步

2017-12-05  本文已影响12人  docallsama

背景知识:

线程 (thread) 线程指代可执行代码的一部分
进程 (process) 指代可执行代码,可以包含多个线程

线程间同步的目的

解决多个线程读写同一个数据时,造成的数据错乱问题

线程间同步的方式

  1. 互斥锁 (Mutex)
  1. 自旋锁 (spinlock)
while (抢锁(lock)==没抢到) {
}
  1. 信号量 (Semaphore)

会出现的问题

  1. 死锁 (deadlock)
死锁示例:P1、P2两个进程都需要有R1、R2两个资源才能继续运行。P1拥有R2,需要R1才能继续运行;P2拥有R1,需要R2才能继续运行。都在互相等待,导致死锁。
  1. 数据竞争 (race hazard)

参考文章

互斥锁,同步锁,临界区,互斥量,信号量,自旋锁之间联系是什么?
信号量wiki
死锁wiki
数据竞争wiki

上一篇 下一篇

猜你喜欢

热点阅读