我遇到了问题,似乎无法解决问题。
我有两个向量矢量,其中存储数据。但我也使用线程来加速值的更新(大小不变,只要有一个数字小于它重写的原始数字)。
但没有原子性,线程是错误的。
你能帮我做点什么吗?
我应该只使用std :: atomic_int吗? 如果是这样,那么我应该如何使用加载和存储功能或者其他什么呢?我将我的向量提供给.h:
中的线程 void for_thread_function(std::vector<std::vector<int>> * DATA1,td::vector<std::vector<int>> * DATA2 /*other params*/)
in .cpp:
std::thread thread (&MY_PROBLEM::for_thread_function, this, &DATA1, &DATA2, /*other params*/);
我应该使用互斥锁吗?然后是哪一个,又如何在两个数据源上使用它?或者你能给我一个例子,我之前根本没有使用过静音(?)。
我应该使用前两个的组合吗?怎么??
其他
你能否解释为什么 选项最好?
感谢您的帮助,我真的在树林里迷失了这些东西。
编辑:我使用线程从不同的起点计算BFS。所以我需要传递整个矩阵。我有相对较大的数据集(一个表有成本,另一个表是从哪个起点到最近的顶点)