【问题标题】:Are mutex locks necessary when multiple threads access the same variable in this case? [duplicate]在这种情况下,当多个线程访问同一个变量时,是否需要互斥锁? [复制]
【发布时间】:2017-04-10 19:38:44
【问题描述】:

在 C 语言中,我使用 pthreads 来跨 pthreads 在共享数组上执行计算。每个 pthread 都有明确的偏移量,因此它们的计算区域没有重叠。

例子:

  • 线程 0 更新数组 [0] 到数组 [9]
  • 线程 1 更新数组 [10] 到数组 [19]
  • 线程 2 更新数组 [20] 到数组 [29]

如果没有计算重叠并且互斥锁不依赖于跨线程边界的相邻索引的更新,那么在这种情况下是否仍然需要互斥锁?

【问题讨论】:

    标签: c arrays multithreading


    【解决方案1】:

    不,因为这些访问位于不同的、不同的内存位置,它们甚至没有潜在的冲突,因此它们不需要相互同步。

    【讨论】:

    • 只要是简单的数组。如果他使用某种奇特的向量结构,其中访问任何元素都需要访问(并可能更改)向量对象本身,那么事情可能会更复杂。
    猜你喜欢
    • 2015-10-11
    • 2020-02-21
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多