2017-07-30 41 views
0

相同的项目,如果我有对将在不同的线程中运行循环下2:可能出现C#阵列2个线程读取在同一时间

for (int ii = 1; ii < times.Length; ii+=2) 
{ 
    if (times[ii] - times[ii - 1] > maxGap) 
    return false; 
} 

for (int ii = 2; ii < times.Length; ii += 2) 
{ 
     if (times[ii] - times[ii - 1] > maxGap) 
     return false; 
} 

的情况下两个线程试图从一个项目阅读times数组,例如,两个线程可以同时尝试并读取times[1]

鉴于这两个线程只会从这些数组读取,这是一个问题,例如它可能会导致我的代码崩溃或任何其他意想不到的负面后果?

+4

不。如果它是只读的,那么没有问题(当然没有其他线程会写入等等)。两个写入或读写组合将导致麻烦。 –

回答

5

如果只执行读取操作,则不会有问题。 一起读写操作可能会导致问题。

+0

这是造成问题的共享写入。多读者总是安全的。如果写入非重叠范围的多个作者也是安全的。 –