假设我们有一个100x100矩阵。
我们有两个线程都通过引用访问这个矩阵(在C ++中是std :: ref())。
第一个线程被分配行1-50,第二个51-100。他们都开始研究他们的积木并写入他们。
两个线程之间没有通信,并且一个线程无法从分配给另一个线程的块读取/写入内容。
在这种特殊情况下,似乎使用互斥锁是多余的,我是否正确?
答案 0 :(得分:1)
正确。如果您不共享任何数据,则无需锁定。
但是你有这个矩阵是有原因的,你可能想稍后分享。要做到这一点,您需要在线程之间建立一些可能使用互斥和条件变量的通信。
在数学中,大多数时候线程用于将一些计算卸载到其他CPU,以便稍后可以合并它们的结果。合并是需要同步的部分。