簡體   English   中英

為什么is_lock_free是成員函數?

[英]Why is is_lock_free a member function?

為什么is_lock_free需要實例(它是成員函數)的原因是什么? 為什么不使用該類型的元函數或靜態constexpr成員函數?

我正在尋找為什么有必要的實際實例。

該標准允許類型有時是無鎖的。

第29.4條無鎖財產

ATOMIC _..._ LOCK_FREE宏指示相應原子類型的無鎖屬性,其中有符號和無符號變體組合在一起。 這些屬性也適用於原子模板的相應(部分)專業化。 值為0表示這些類型永遠不會無鎖。 值為1表示這些類型有時是無鎖的。 值為2表示類型始終是無鎖的。

C ++原子論文n2427指出了其背后的原因:

...該提案提供了運行時無鎖查詢功能,而不是編譯時常量,因為平台的后續實現可能會使用無鎖操作來升級鎖操作,因此系統通常會在動態庫之后提取此類功能,我們希望保持這種可能性。 此外,我們建議沒有硬件原子支持的實現使用該技術。 ...

而且(如傑西·古德指出):

該提案在單個對象而非整個類型上提供了無鎖查詢功能,以允許不可避免地錯位的原子變量而不會損害對齊的原子變量的性能

暫無
暫無

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

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