c ++矢量的矢量原子写入和读取线程

时间:2018-05-31 21:10:00

标签: c++ multithreading vector mutex atomic

我遇到了问题,似乎无法解决问题。

我有两个向量矢量,其中存储数据。但我也使用线程来加速值的更新(大小不变,只要有一个数字小于它重写的原始数字)。

但没有原子性,线程是错误的。

你能帮我做点什么吗?

  1. 我应该只使用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*/);

  2. 我应该使用互斥锁吗?然后是哪一个,又如何在两个数据源上使用它?或者你能给我一个例子,我之前根本没有使用过静音(?)。

  3. 我应该使用前两个的组合吗?怎么??

  4. 其他

  5. 你能否解释为什么 选项最好?

    感谢您的帮助,我真的在树林里迷失了这些东西。

    编辑:我使用线程从不同的起点计算BFS。所以我需要传递整个矩阵。我有相对较大的数据集(一个表有成本,另一个表是从哪个起点到最近的顶点)

0 个答案:

没有答案