【发布时间】:2020-07-12 11:41:24
【问题描述】:
我有 2 个带有一些文件名和处理这些文件的函数的向量:
vector<string> vecFilenames1; // {filename1_1, filename1_2, filename1_3, ...}
vector<string> vecFilenames2; // {filename2_1, filename2_2, filename2_3, ...}
这些向量具有相同的大小。我现在如何处理:
// function for processing
void doSomeStuff() {// ...}
// processing loop
for (int i = 0; i < vecFilenames1.size();i++) {
doSomeStuff(vecFilenames1[i], vecFilenames2[i]);
}
我有 4 个线程(2 个核心),我想更快地完成这样的过程,我该怎么做?
编辑 1
我使用mingw编译器:
g++ (MinGW.org GCC-8.2.0-5) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
我是否需要将其更改为较新的版本才能轻松解决我的问题?
编辑 2
我更新了我的 gcc:
g++.exe (MinGW.org GCC Build-2) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
【问题讨论】:
-
您应该指定最新版本的 C++ 以及可以使用的编译器,因为可能的答案之一是
std::for_each()的并行重载,但这是 C++17 以后的版本仅,您的标准库实现可能支持也可能不支持该重载。 -
@underscore_d 我可以更改我的 mingw 版本以获得新的 c++17 版本,如果你能展示一个
std::for_each()并行重载使用的小例子
标签: c++ multithreading