C++ - std::vector 安全的多线程
C++ - std::vector safe multi-threading
我正在开发一个程序来计算矩阵的行列式(可能很大,最多 1000 行)。
由于它可能很大,我在 dim(M) > 250
(< 250 在 100 毫秒内计算)时使用多线程。
我的想法是把矩阵分成4份,Gauss同时消去每份,然后重新收集矩阵,计算行列式。
我想知道,在多个线程中访问一个向量是否安全,因为它保证我只会访问它的不同部分?
另外,有什么技巧可以限制内存的使用?
我用的是vector<vector<double>>
,所以8 * 1000 * 1000 doubles
真的是个大麻烦。
只要不改变它的大小,它就是安全的。
向量的内容不会移动,除非您调整大小。所以只要访问内存的不同部分就是安全的。
我正在开发一个程序来计算矩阵的行列式(可能很大,最多 1000 行)。
由于它可能很大,我在 dim(M) > 250
(< 250 在 100 毫秒内计算)时使用多线程。
我的想法是把矩阵分成4份,Gauss同时消去每份,然后重新收集矩阵,计算行列式。
我想知道,在多个线程中访问一个向量是否安全,因为它保证我只会访问它的不同部分?
另外,有什么技巧可以限制内存的使用?
我用的是vector<vector<double>>
,所以8 * 1000 * 1000 doubles
真的是个大麻烦。
只要不改变它的大小,它就是安全的。
向量的内容不会移动,除非您调整大小。所以只要访问内存的不同部分就是安全的。