C ++ - std :: vector安全多线程

时间:2017-12-15 23:02:34

标签: c++ multithreading memory-management shared-memory

我正在开发一个程序来计算矩阵的行列式(可能很大,最多1000行)。 由于它可能很大,我在dim(M) > 250时使用多线程(< 250在100 ms内计算)。

我的想法是将矩阵分成4个部分,高斯同时消除每个部分,然后重新收集矩阵并计算行列式。

我想知道,如果在多个线程中访问一个向量是安全的,因为它保证我只能访问它的不同部分吗?

另外,有哪些提示可以限制内存使用量? 我使用vector<vector<double>>,因此8 * 1000 * 1000 doubles可能会非常麻烦。

1 个答案:

答案 0 :(得分:5)

只要你不改变它的大小就是安全的。

除非您调整大小,否则不会移动矢量的内容。因此,只要您访问内存的不同部分,就是安全的。