假设变量在读取过程中没有被修改的风险,那么在一个变量被同时读取2个或更多的线程中是否存在固有的问题?是变量线程安全的同时读取?
15
A
回答
9
如果你的假设成立,那就没有问题了。
0
鉴于数据库通常可以使用shared read locks,其中任何数量的客户端可能会读取同一个块,我建议不存在直接的固有问题。
0
有三个字符。
编辑: 哎呦。是的,它是线程安全的。不,没有问题。人们通常会问是否线程安全,而不是线程不安全。
3
只要它是一个简单的变量,就没有风险。
如果它是一个属性,阅读它可能会有副作用,所以不能保证是线程安全的。
7
没有这种操作本质上不是线程安全的。
尽管变量当前未被写入,但以前对该变量的写入操作可能对所有线程都不可见。这意味着两个线程可以读取相同的值并获得不同的结果,从而创建竞争条件。
这可以通过内存障碍,正确使用volatile或其他一些机制来防止。我们需要更多地了解您的环境,特别是语言,以给出完整的解释。
稍微重申一下你的问题,虽然会产生更好的答案。假设没有更多写入,并且所有先前的写入对当前线程都是可见的,那么从多个线程读取值是安全的。
相关问题
- 1. 只读时变量是否线程安全?
- 2. 同时从2个线程读取全局变量
- 3. 将变量同时更新为同一值的线程安全
- 4. C#变量线程安全
- 5. 是java中整数线程安全读取的不同步吗?
- 6. 一个线程读取和另一个写入volatile变量 - 线程安全?
- 7. VB.NET中的线程安全变量
- 8. 线程安全的熊猫变量
- 9. 线程安全:Ruby中的类变量
- 10. 线程中线程安全的可变变量?
- 11. 我可以从线程A写入一个变量,同时从线程B读取相同的变量
- 12. 全局Ruby变量中的局部变量是否线程安全?
- 13. java变量本身是否线程安全?何时更新变量?
- 14. java线程全局变量的同步
- 15. 领域快速线程安全变量
- 16. WebService成员变量和线程安全
- 17. Kotlin局部变量线程安全
- 18. 线程安全性单个变量
- 19. Ruby线程安全类变量
- 20. 装配 - 线程安全局部变量
- 21. 字典作为线程安全变量
- 22. 局部变量和线程安全
- 23. C++多线程安全局部变量?
- 24. 线程安全,防止变量更新
- 25. 线程能否安全地读取由VCL事件设置的变量?
- 26. 只读线程安全
- 27. 是否为线程更新了公共静态变量? (是线程安全的?)
- 28. stl向量并发读取线程安全吗?
- 29. 线程安全的Java池,带有即时读取
- 30. 多线程定期更新全局变量,同时第三个线程等待读取
如果他的假设成立,问题不是问题吗? (它可能不会,请参阅guffa的答案:http://stackoverflow.com/questions/3033425/are-simultaneous-reads-of-a-variable-thread-safe/3033439#3033439) – Kris 2010-06-13 18:48:08
即使目前没有写入,前一个权利可能尚未对所有创建竞赛条件的线索都可见。查看我的答案了解更多详情。 – JaredPar 2010-06-13 19:02:07
@Kris,@JaredPar:确实如此,但我正在回答OP所述的问题。 :-) – 2010-06-13 19:17:12