假设变量在读取过程中没有被修改的风险,那么两个或多个线程同时读取变量是否存在任何固有问题?
答案 0 :(得分:10)
如果您的假设成立,则没有问题。
答案 1 :(得分:9)
此操作本身并不是线程安全的。
即使当前没有写入变量,以前对变量的写入可能还不是所有线程都可见。这意味着两个线程可以读取相同的值并获得不同的结果,从而产生竞争条件。
这可以通过内存障碍,正确使用volatile或其他一些机制来防止。我们需要更多地了解您的环境,特别是语言,以提供完整的解释。
稍微重述一下你的问题会产生更好的答案。假设没有更多的写入,并且所有先前的写入对当前线程都是可见的,那么从多个线程读取值是安全的。
答案 2 :(得分:3)
只要它是一个简单的变量,就没有风险。
如果是属性,读取它可能会产生副作用,因此不能保证线程安全。
答案 3 :(得分:0)
鉴于数据库通常可以使用shared read locks,任何数量的客户端都可以读取相同的块,我建议没有直接的固有问题。
答案 4 :(得分:0)
是三个字符。
编辑: 哎呦。是的,这是线程安全的。不,没有问题。人们通常会询问某些东西是否是线程安全的,而不是它的线程不安全。