【问题标题】:C# Array 2 threads read same item at same timeC# Array 2 个线程同时读取相同的项目
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 共享写入会导致问题。多个阅读器始终是安全的。如果多个写入器写入非重叠范围也是安全的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多