我正在使用本地函数定义来运行代码块 N 次,就像 C# 的并行版本一样,但是f
当我在同一范围内使用两个或多个函数时,它会给出函数的多个定义错误。如何在同一范围内每次使用后增量更改函数名称,例如 f1、f2、f3、..?
定义:
#ifndef PARALLEL_FOR
#define PARALLEL_FOR(N,O) \
struct LocalClass \
{ \
void operator()(int i) const O \
} f; \
std::thread threads[N]; \
for(int loopCounterI=0; loopCounterI<N; loopCounterI++) \
{ \
threads[loopCounterI]=std::thread(f,loopCounterI); \
} \
for(int loopCounterI=0; loopCounterI<N; loopCounterI++) \
{ \
threads[loopCounterI].join(); \
} \
#endif
用法:
PARALLEL_FOR(
5,
{std::cout<<100*i<<std::endl;}
);
输出:
0
300
200
100
400
通常添加{\
并}\
会解决后续调用,但如果我做嵌套并行呢?