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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ - std :: vector安全多线程相关的知识,希望对你有一定的参考价值。

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

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

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

另外,哪些提示可以限制内存使用量?我使用vector<vector<double>>,所以8 * 1000 * 1000 doubles可能是一个非常大的麻烦。

答案

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

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

以上是关于C ++ - std :: vector安全多线程的主要内容,如果未能解决你的问题,请参考以下文章

C ++中多线程的安全性与速度[关闭]

对 std::vector 元素的赋值是线程安全的吗?

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future