递归锁?

  1. 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引⼊互斥锁。互斥锁 为资源引⼊⼀个状态:锁定/⾮锁定。某个线程要更改共享数据时,先将其锁定,此时资源的 状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态成“⾮锁定”,其他 的线程才能再次锁定该资源。互斥锁保证了每次只有⼀个线程进⾏写⼊操作,从⽽保证了多线 程情况下数据的正确性。

  2. 读写锁从⼴义的逻辑上讲,也可以认为是⼀种共享版的互斥锁。如果对⼀个临界区⼤部分是读操作⽽只有少量的写操作,读写锁在⼀定程度上能够降低线程互斥产⽣的代价。

  3. Mutex可以分为递归锁(recursive mutex)和⾮递归锁(non-recursive mutex)。可递归锁也可称为可重⼊锁(reentrant mutex),⾮递归锁⼜叫不可重⼊锁(non-reentrant mutex)。⼆者唯⼀的区别是,同⼀个线程可以多次获取同⼀个递归锁,不会产⽣死锁。⽽如果⼀个线程多次获取同⼀个⾮递归锁,则会产⽣死锁。

Last updated