爲什麼is_lock_free
需要一個實例(它是一個成員函數)的原因是什麼?爲什麼不是這個類型的元函數,還是一個靜態的constexpr
成員函數?爲什麼is_lock_free是成員函數?
我正在尋找爲什麼有必要的實際實例。
爲什麼is_lock_free
需要一個實例(它是一個成員函數)的原因是什麼?爲什麼不是這個類型的元函數,還是一個靜態的constexpr
成員函數?爲什麼is_lock_free是成員函數?
我正在尋找爲什麼有必要的實際實例。
該標準允許一個類型爲有時無鎖。
部分29.4 無鎖財產
原子_..._ LOCK_FREE宏表示 相應的原子類型的無鎖特性,與組合在一起的符號和無符號變種 。這些屬性也適用於原子模板的相應 (部分)專業化。值爲0 表示這些類型從不鎖定。 值爲1表示 這些類型有時是無鎖的。值爲2表示 類型始終是無鎖的。
的C++ atomic paper n2427狀態背後的原因:
...該提案提供了運行時無鎖的查詢功能,而不是 編譯時間常數,因爲 平臺的後續實現可升級鎖定操作無鎖操作,所以 系統通常會將這些設備抽象到動態庫後面,我們希望保持這種可能性的開放性。此外, 我們建議沒有硬件原子支持的實現使用 該技術。 ...
而且也(爲Jesse Good指出):
該提案提供單個對象無鎖的查詢功能,而不是整個類型,以便允許不可避免的錯位原子變量沒有懲罰的性能對齊的原子變量
它被命名爲「is_instance_free」嗎? QED號。 –
看起來是因爲表現[引自這裏](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html):'該提案提供無鎖查詢單個對象上的函數而不是整個類型,以允許不可避免的未對齊的原子變量,而不會影響對齊的原子變量的性能# –
@JesseGood聽起來像一個答案。爲什麼是評論? ;) –