線程安全
回答
這個特殊情況是安全的,是的。
讀取和寫入數組的不同部分不會干擾其他操作。
但是,根據元素的類型和元素的大小,讀取和寫入相同的位置會給您帶來問題。
長話短說:是的。只要它到兩個不同的地點,它就是一個安全的操作。
前段時間有一個discussion about this,如果您好奇,它有一些有用的信息。
+1從來沒有想過這是線程安全的,但我明白它是爲什麼。謝謝! – 2010-05-09 19:56:36
我不確定這是保證安全。想象一下你有byte []。這些字節在內存中緊密排列。現在,如果您修改這些字節,編譯器可能會合並一些寫入來執行字(32位)大小的讀取修改寫入操作。在一些CPU上,例如ARM,這是編譯器唯一的內存修改指令。如果您一次修改多個字節,這非常方便。 CPU也可以做同樣的事情。它也可以在你不知道它的情況下重新排序。面對這種優化,讀取相鄰存儲器的線程可能會看到部分修改。你不會看到這種效果,因爲堆分配器對你很好,並且總是給你至少是字對齊的內存。
+1:在我看來這是最好的答案。總是最好懷疑無鎖的穿線習語。我可以想到各種內存障礙問題,即使線程在不同的陣列位置上工作也可能導致問題。只是在問題中提供的信息不足以給出明確的答案。 – 2010-05-09 20:57:11
- 1. java線程安全:線程安全嗎?
- 2. 線程安全
- 3. 線程安全
- 4. 線程安全
- 5. 線程安全
- 6. 線程安全
- 7. 線程安全
- 8. 線程安全
- 9. 線程安全
- 10. 線程安全
- 11. 線程安全應用程序中的線程安全
- 12. 線程安全:: random_device
- 13. 線程安全singelton
- 14. 線程安全樹
- 15. 線程安全bloomfilter
- 16. httpurlconnection線程安全
- 17. 線程安全OfType
- 18. 線程安全UITableView
- 19. nftw線程安全
- 20. IndexedDB線程安全
- 21. Mysqldatasource線程安全
- 22. CDatabase線程安全
- 23. NSMutableString線程安全?
- 24. SolrJ線程安全
- 25. Database.SqlQuery線程安全
- 26. 線程安全的
- 27. 線程安全,Silverlight
- 28. GTK +線程安全
- 29. Array.forEach線程安全
- 30. RxJava線程安全
只要這些項目在單獨的CPU字詞 – Stewart 2010-05-09 19:55:56
+1從來沒有想過這是線程安全的,但我明白它爲什麼。謝謝! – 2010-05-09 19:57:29
考慮使用無鎖算法時,認爲「同一位置」與CPU(多個)所認爲的位置不同,這一點很重要。內存的CPU視圖與C這樣的視圖語言完全不同,它給了我們字節佔用地址的地方。在某些數據類型的某些CPU架構(特別是ARM,Power)上,即使這可能不安全 – Stewart 2010-05-09 22:59:57