multithreading - 在共享对象的各个部分上进行独立操作时,是否需要互斥锁?

标签 multithreading mutex

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

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

第一个线程分配了1-50行,第二个分配了51-100行。他们俩都开始在自己的积木上工作并写信给他们。

两个线程之间没有通信,一个线程也不会从分配给另一线程的块中读取/写入内容。

在这种特殊情况下,使用互斥锁似乎是多余的,对吗?

最佳答案

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

但是您拥有此矩阵是有原因的,您可能希望稍后共享。为此,您可能需要使用互斥锁和条件变量在线程之间建立一些通信。

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

关于multithreading - 在共享对象的各个部分上进行独立操作时,是否需要互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48612103/

相关文章:

Python 无法终止进程

c# - 使用 WPF 数据绑定(bind)设计响应式 UI

java - 为每个新线程执行代码?

c - 多线程程序额外运行while循环次数

c++ - 不锁定 pthread_cond_timedwait 和 pthread_cond_signal 的互斥量(在 Linux 上)

java - 为什么 jProfiler 将 Unsafe.park/unpark 显示为使用 CPU 周期?

c++ - QMutex ,如果线程正在运行,则在这里等待

ruby-on-rails - Rails 进程的互斥锁

multithreading - 基本互斥锁和原子整数哪个更有效?

java - 这种线程长计算的实现是否正确?