假设在读取期间变量不会被修改,那么一个变量同时被两个或更多线程读取会存在固有的问题吗?
该操作本身不具备线程安全性。
即使该变量当前没有被写入,对该变量之前的写入可能尚未对所有线程可见。这意味着两个线程可以读取相同的值并得到不同的结果,从而创建了一个竞争条件。
但是,通过内存屏障、正确使用volatile或其他几种机制可以防止这种情况发生。我们需要了解更多关于您的环境,特别是语言,才能给出完整的解释。
稍微修改一下你的问题能够得到更好的答案。假设没有更多的写入并且所有先前的写入对当前线程可见,则从多个线程读取该值是安全的。
如果您的假设成立,那么就没有问题了。
是的,用三个字母表示。
编辑: 哎呀,是的,它是线程安全的。不,没有问题。人们通常会问某个东西是否线程安全,而不是线程不安全。