我見過這個操作符被使用了很多,我甚至每次使用它都會改變。所有的酷寶石都有這種和平的代碼。但是使用這個操作符時線程的安全性呢?Ruby || =操作員線程安全
回答
與其他任務一樣,如果沒有互斥鎖,它也不是真正的線程安全的。它可能看起來是線程安全的,取決於系統中的核心數量,它可能是ish。我注意到4線程/ 8線程系統比2線程/ 2線程系統有更多的線程問題,所以如果你有權訪問其中的一個線程,可以使用它來確保你已經得到你想要的任何解決方案。
寫鎖定可能是凌亂的業務,但它是您爲生活在多線程世界中而付出的代價。
不要拆解 - 線程安全的ish ==不安全的。 – dbenhur
@Tadman - 你確定這是不是一個安全的操作在MRI中歸功於GIL? – pguardiario
這實際上取決於字節碼是如何生成和解釋的。像其他語言的'+ ='或甚至'++'一樣,它被實現爲加載,測試和存儲。如果這兩者之間有中斷的機會,那麼它不是沒有鎖的線程安全。 – tadman
- 1. Ruby 1.8.6,SQLite3線程安全
- 2. C#treeview線程安全操作
- 3. 線程安全問題:跨線程操作無效
- 4. 多線程和鎖定(線程安全的操作)
- 5. Groovy的安全範圍操作員?
- 6. 剃刀安全導航操作員? ?
- 7. Ruby類方法是否線程安全?
- 8. Ruby的Net :: HTTP線程安全嗎?
- 9. Ruby線程安全類變量
- 10. Ruby中哈希的線程安全
- 11. 線程安全:Ruby中的類變量
- 12. 安全地喚醒Ruby中的線程
- 13. JRuby上的Ruby :: Net :: HTTP線程安全
- 14. java線程安全:線程安全嗎?
- 15. 線程安全的,沒有普查員
- 16. WebService成員變量和線程安全
- 17. 線程安全地訪問類成員
- 18. 成員集合迭代線程安全
- 19. C#線程安全靜態成員
- 20. C++成員函數線程安全
- 21. 普查員和線程安全
- 22. 製作類線程安全
- 23. 線程安全應用程序中的線程安全
- 24. 線程安全流和流操縱器
- 25. Ruby&! (和爆炸)操作員
- 26. testng偵聽程序線程安全的文件操作
- 27. 確保安全的SQLite數據庫操作(不是指線程安全的)
- 28. 製作寫入文件線程安全
- 29. 操作數據時Ruby線程死亡
- 30. 線程安全
它本質上不是線程安全的,比x = x ||更安全。 y';也就是說,它不是*線程安全的。 (可能會有一些基於特定實現的輕微警告,但它涉及一個讀寫對,**不保證原子性*或*可見性**。) – 2012-12-13 05:15:38