公平锁与非公平锁

什么是公平锁与非公平锁?

公平锁

指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。公平锁的优点在于各个线程公平地获取锁,避免了线程饥饿的情况。

非公平锁

指线程在获取锁时不按照申请锁的顺序,而是直接尝试获取锁,如果锁被其他线程持有,则会直接返回失败。非公平锁的优点在于性能更高,因为线程不需要排队等待,可以直接尝试获取锁。解决了线程饥饿的问题,但可能会导致某些线程长时间无法获取锁。

非公平锁吞吐量为什么比公平锁大?

非公平锁的吞吐量 之所以高,是因为它减少了线程上下文切换的开销,允许新来的线程插队,避免了唤醒等待线程中线程锁必须的系统开销。


相关内容

0%