2020-08-13:公平锁和非公平锁有什么区别?

2020-08-14  本文已影响0人  残冬十九

前言

每日一题专栏

公平锁和非公平锁有什么区别

公平锁

公平锁:线程按照申请的顺序获取到所,申请的线程进入一个队列去排队,永远都是队里第一位获取到锁。
优点:所有的线程都可以获取到锁资源,不会在队列中拿不到资源
缺点:吞吐量下降,除了队列第一个线程,其他线程会进行阻塞,唤醒阻塞线程开销很大

非公平锁

非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。
优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必唤醒所有线程,会减少唤起线程的数量。
缺点:可能导致队列中间的线程一直获取不到锁或者长时间获取不到锁,导致饿死。

上一篇下一篇

猜你喜欢

热点阅读