簡體   English   中英

低競爭性互斥鎖在cpu方面的成本有多高

[英]How costly is a low contention mutex in terms of cpu

我有一些C代碼(在Linux上)需要以線程安全的方式運行。 它的爭用非常低,但是我必須加以保護以確保正確性。

我可以選擇使用局部變量來保護它(這將根據代碼的編寫方式工作),但是由於我有一個互斥量變量,從cpu的使用角度來看,哪種方法更好?

如我所料,鎖的爭用幾乎永遠不會比獲取,遞增和遞減局部變量要昂貴得多,而獲取和釋放互斥鎖呢?

我在其他地方使用互斥鎖,因此不使用互斥鎖不會節省任何內存。

如果將同一數據與來自另一個線程的訪問同時進行修改,則只有兩種選擇:鎖定或使用原子數據類型。 沒有“使用局部變量來保護它”這樣的東西。 在鎖定和原子這兩個選項中,它們的大部分運行時開銷是與其他內核的內存(緩存)同步,並且對於其中任何一個內核,它應該大致相同。 這是一筆不小的成本(很可能要花費幾十個周期),但您不是可以選擇退出的; 沒有它就無法獲得正確性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM