簡體   English   中英

有原子操作嗎?

[英]Is there an atomic |= operation?

有沒有原子|=或原子或? 如果沒有什么建議的技術來設置需要線程安全的變量中的位? (我在避免鎖)

在C ++ 03中沒有這樣的東西,但您可以使用供應商特定的功能。 例如,您可以在Windows上使用InterlockedOr 在C ++ 0x中,您可以使用atomic_fetch_or

請注意,原子操作也需要鎖定,盡管它在硬件級別上仍然很昂貴。

您可以使用原子比較和交換(CAS),可以在任何您可能需要的地方使用它,來制作幾乎任何操作的原子版本。

看一下_InterlockedOr內在函數。 這是你可能獲得的最快。

在當前的C ++標准中,沒有這樣的想法 - 但是C ++ 11將會在秋季發布。 見: http//www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1401.pdf

我不確定,是否已有編譯器支持即將推出的C ++標准的新線程設施的部分內容。 否則你需要做一個解決方法(例如使用Boost)。

暫無
暫無

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

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