我不知道複合賦值^ =是否是C#中的原子。 我真正需要做的是旋轉(如果值爲0,則將其設置爲1,如果它爲1,則將其設置爲0)使用單個原子操作的Int32變量。C#中的複合賦值^ =原子嗎?
回答
如上回答,X^= 1是不是原子。你可以使用Interlocked.Increment(這是原子的),然後,在閱讀時,考慮值%2?
金星給你,羅伯!它幫助到我。 – 2011-06-09 12:03:17
要小心。 「%2」可以給你1,0或-1作爲答案。 「%2」不是讀取最低位的同義詞。如果你想讀取底部位,請閱讀底部位。 – 2011-06-09 15:01:13
沒有考慮到這一點。據推測,直到你溢出這不是一個問題。 – Rob 2011-06-10 10:31:40
保證爲原子的操作收集在Interlocked
類中。見http://msdn.microsoft.com/en-us/library/system.threading.interlocked.aspx
這是我的反應,雖然我不明白如何使用例如CompareExchange來實現bsnote想要做的事情。 – Rob 2011-06-09 11:56:28
化合物分配不是原子的。例如x += 1
是一個用於從內存中讀取x的語法糖,添加1並將值寫回內存。
如果你想要的是什麼,什麼是不原子讀埃裏克利珀對這個問題的博客文章一個很好的解釋:Atomicity, volatitly and immutability are different
- 1. C++中的指針賦值原子嗎?
- 2. 賦值=和減法賦值 - = C中的原子操作?
- 3. C++複合賦值乘以
- 4. 混合賦值和複合賦值運算符 - 優先級?
- 5. 是原子變量的多重賦值,是一個原子操作嗎?
- 6. Javascript中的複合賦值導致NaN
- 7. 當增加原子變量並將其賦值給其他值時,C++ 11是原子操作嗎?
- 8. 這是C++中的有效賦值嗎?
- 9. C# - 複雜變量賦值
- 10. 使用字符串賦值和複合賦值是否安全?
- 11. 是變量賦值和讀取原子操作嗎?
- 12. C#對象類型 - 賦值的原子性
- 13. 是賦值運算符'='原子?
- 14. 原子性簡單賦值運算符
- 15. 如何在C++中重載複合賦值?
- 16. 複合賦值運算符重載
- 17. 宏可以執行復合賦值
- 18. C中的值賦值
- 19. java複合賦值運算符和賦值運算符
- 20. C#:隱式的Arraylist賦值可能嗎?
- 21. 超載複合賦值運算符
- 22. 解決複合賦值表達式
- 23. 非原子值得嗎?
- 24. memcpy vs C中的賦值
- 25. C++引用可以賦值嗎?
- 26. C:賦值給char ...期望轉換嗎?
- 27. 在C中有重複的枚舉值是合法的嗎?
- 28. C++複製構造函數和賦值
- 29. bignum divison和C++中的值賦值
- 30. fwrite是原子嗎?
對於0(否/錯誤)或1(是/真),爲什麼要使用Int32?這正是布爾值。 – RobinJ 2011-06-09 11:24:55
它是數組中的一個索引。 – 2011-06-09 11:45:33