公平鎖和非公平鎖有什麼區別

公平鎖

多個線程按照申請鎖的順序去獲得鎖,線程會直接進入隊列去排隊,永遠都是隊列的第一位才能得到鎖。

優點

所有的線程都能得到資源,不會餓死在隊列中。

缺點

吞吐量會下降很多,隊列裏面除了第一個線程,其他的線程都會阻塞,cpu喚醒阻塞線程的開銷會很大。

非公平鎖

多個線程去獲取鎖的時候,會直接去嘗試獲取,獲取不到,再去進入等待隊列,如果能獲取到,就直接獲取到鎖。

優點

可以減少CPU喚醒線程的開銷,整體的吞吐效率會高點,CPU也不必喚醒所有線程,會減少喚起線程的數量。

缺點

可能導致隊列中間的線程一直獲取不到鎖或者長時間獲取不到鎖,導致餓死。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章