Concurrency 线程如何写入矩阵的不同单元

Concurrency 线程如何写入矩阵的不同单元,concurrency,pthreads,mutex,race-condition,Concurrency,Pthreads,Mutex,Race Condition,我有一个全局矩阵(输入vector),我需要几个线程才能按照我说的方式写入它。 起初,我考虑只使用一个互斥锁,因为我担心竞争条件(访问+写入可能不是原子的) 然后我使用了一个互斥矩阵。我对此不太确定。这似乎是同样的问题 你能帮我吗?如果你需要,我会添加更多细节。 谢谢您只需要一个互斥来保护由多个线程访问的对象,其中至少有一个线程修改对象 如果在任何线程访问矩阵之前(例如,在线程启动之前)调整了矩阵的大小,则只有在多个线程访问同一单元格时,才需要互斥锁。如果您的线程正在访问不同的单元格,那么如果它

我有一个全局矩阵(输入vector>),我需要几个线程才能按照我说的方式写入它。 起初,我考虑只使用一个互斥锁,因为我担心竞争条件(访问+写入可能不是原子的) 然后我使用了一个互斥矩阵。我对此不太确定。这似乎是同样的问题

你能帮我吗?如果你需要,我会添加更多细节。
谢谢

您只需要一个互斥来保护由多个线程访问的对象,其中至少有一个线程修改对象

如果在任何线程访问矩阵之前(例如,在线程启动之前)调整了矩阵的大小,则只有在多个线程访问同一单元格时,才需要互斥锁。如果您的线程正在访问不同的单元格,那么如果它们都没有调整矩阵的大小,那么一切都将正常

如果一个线程写入一个单元,另一个线程从同一个单元读取,那么两个线程在访问该单元之前必须锁定相同的互斥锁。如果两个线程写入同一个单元,那么两个线程必须再次锁定同一个互斥锁。这可以是一个与其他单元格使用的互斥锁不同的互斥锁,也可以是同一个互斥锁


如果一个线程在其他线程访问矩阵时修改了矩阵结构,那么所有相关线程都必须锁定相同的互斥锁。这可以是不同于用于单个单元格的任何互斥体的互斥体,也可以是相同的互斥体。

是的,矩阵的大小不会调整。谢谢,成功了。