c#原始数组是volatile吗?

我声明数组像private double[] array = new double[length] 。 在一个线程中更新此数组项并读入另一个线程是否安全? 我有最新的价值吗?

注意我不枚举数组。 我只能通过索引访问其项目。

挥发性并不能保证价值的新鲜感。 它会阻止某些优化,但不保证线程同步。

Double不保证以primefaces方式更新 。 因此,在没有同步的情况下更新/读取双精度数组将不会是线程安全的,或者没有volatile,因为您可能会读取部分写入的值。

从MSDN ,数组不是线程安全的:

枚举集合本质上不是线程安全的过程。 即使集合是同步的,其他线程仍然可以修改集合,这会导致枚举器抛出exception。 为了在枚举期间保证线程安全,您可以在整个枚举期间锁定集合,也可以捕获由其他线程所做的更改导致的exception。

如果您一次只更新单个项目,我认为您将是安全的,但我不相信它,除非我找到certificate它的文档。

不,他们不是。 您应该使用信号量或其他方法设计锁定系统,以确保线程安全。 您可以检查生产者/消费者问题 。