【问题标题】:Multithreading a larger c++ program in CPU machine在 CPU 机器中多线程处理更大的 c++ 程序
【发布时间】:2020-09-17 02:26:29
【问题描述】:

使用小程序工作(就运行时间而言),例如,即使我的计算机上有几个内核,c++ 程序也很容易。

#include <bits/stdc++.h> 
using namespace std; 
  
int main() 
{ 
    vector<int> g1; 
  
    for (int i = 1; i <= 10; i++) 
        g1.push_back(i * 10); 
  
  
    for (int i = 1; i <= 10; i++){
        std::cout << g1[i] <<endl;
    }
    return 0; 
}

但是,我将使用一个向量大小非常大 [超过一百万] 的程序。还有很多其他进程,这使得在我的计算机(MacBook)上以较短的运行时间完成程序变得更加困难。有什么方法可以并行执行(我的意思是使用多个线程)?这意味着我运行相同的程序,但由于在多个线程中进行处理,时间会减少。我对并行计算很陌生,所以如果问题不够清楚,请告诉我。

我的电脑内存(macbook):[8GB 1600 MHz DDR3]

处理器:1.6 GHz 双核 Intel Core i5

【问题讨论】:

  • 速度,速度,速度,但您允许 #include &lt;bits/stdc++.h&gt; 将您的构建时间减慢一个数量级。

标签: c++ multithreading process


【解决方案1】:

如果您使用相同的资源(向量 g1),那么很遗憾不会节省大量时间。

线程很适合以异步方式与分离的资源分开运行。

这是另一个更深入地使用线程访问 STL 向量的问题:C++ Access to vector from multiple threads

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多