我见过这个操作符被使用了很多,我甚至每次使用它都会改变。所有的酷宝石都有这种和平的代码。但是使用这个操作符时线程的安全性呢?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