我是否需要互斥锁来对共享对象的单独部分进行独立操作?

时间:2018-02-04 19:22:51

标签: multithreading mutex

假设我们有一个100x100矩阵。

我们有两个线程都通过引用访问这个矩阵(在C ++中是std :: ref())。

第一个线程被分配行1-50,第二个51-100。他们都开始研究他们的积木并写入他们。

两个线程之间没有通信,并且一个线程无法从分配给另一个线程的块读取/写入内容。

在这种特殊情况下,似乎使用互斥锁是多余的,我是否正确?

1 个答案:

答案 0 :(得分:1)

正确。如果您不共享任何数据,则无需锁定。

但是你有这个矩阵是有原因的,你可能想稍后分享。要做到这一点,您需要在线程之间建立一些可能使用互斥和条件变量的通信。

在数学中,大多数时候线程用于将一些计算卸载到其他CPU,以便稍后可以合并它们的结果。合并是需要同步的部分。