OpenMP是什么?
维基百科文章指出,"OpenMP(Open Multi-Processing)是一种应用程序编程接口(API),支持C、C++和Fortran的多平台共享内存多处理编程,可在包括Unix和Microsoft Windows在内的多种架构上运行。它由一组编译器指令、库例程和环境变量组成,可以影响运行时行为。" 意思是什么呢?
与线程、线程池和工作窃取等并发方法相比,它有何优势?
OpenMP是什么?
维基百科文章指出,"OpenMP(Open Multi-Processing)是一种应用程序编程接口(API),支持C、C++和Fortran的多平台共享内存多处理编程,可在包括Unix和Microsoft Windows在内的多种架构上运行。它由一组编译器指令、库例程和环境变量组成,可以影响运行时行为。" 意思是什么呢?
与线程、线程池和工作窃取等并发方法相比,它有何优势?
这是一组扩展,为C/C++提供了在不显式管理(创建、销毁、分配)线程的情况下并行运行某些代码部分的能力。
它基本上通过允许您声明性地并行运行代码的某些部分,使您摆脱了自己管理线程的复杂性。以下是一个代码示例:
# pragma omp parallel \
shared ( n, x, y ) \
private ( i ) \
reduction ( + : xdoty )
# pragma omp for
for ( i = 0; i < n; i++ )
{
xdoty = xdoty + x[i] * y[i];
}