【发布时间】:2017-07-30 13:14:26
【问题描述】:
如果我有以下 2 个将在不同线程上运行的 for 循环:
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]。
鉴于两个线程只会从这些数组中读取,这是一个问题吗,例如它会导致我的代码崩溃或任何其他意外的负面后果?
【问题讨论】:
-
没有。如果它是只读的,那么就没有问题(当然假设没有其他线程将写入,等等)。一二写或读写组合会出问题。
标签: c# arrays multithreading thread-safety