假设我们有一个100x100的矩阵。
我们有两个线程都通过引用(在C++中为std::ref())访问此矩阵。
第一个线程分配了1-50行,第二个分配了51-100行。他们俩都开始在自己的积木上工作并写信给他们。
两个线程之间没有通信,一个线程也不会从分配给另一线程的块中读取/写入内容。
在这种特殊情况下,使用互斥锁似乎是多余的,对吗?
最佳答案
正确的。如果您不共享任何数据,则无需锁定。
但是您拥有此矩阵是有原因的,您可能希望稍后共享。为此,您可能需要使用互斥锁和条件变量在线程之间建立一些通信。
在数学上,大多数时间线程用于将某些计算卸载到其他CPU,以便稍后可以合并它们的结果。合并是需要同步的部分。
关于multithreading - 在共享对象的各个部分上进行独立操作时,是否需要互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48612103/