linux下OpenMP多线程编程实例
重点语法:
复制代码代码如下所示:
#是
# pragma omp并行
# pragma omp减少(+:变量)
# pragma omp临界 / /锁
{
}
# pragma omp并行(x,y)私人 / /每个线程独立的副本的x,y变量,互不干扰,如果没有默认是共享变量
# pragma omp并行调度(静态/动态/引导,K) / /总工作量分为N / K块,然后多线程调度
# pragma omp并行段
{
# pragma omp section / /确保没有变量之间的依赖关系的几种功能下的部分
…
# pragma omp section
…
}
# pragma omp并行
{
…();
# pragma omp主人/单 / /保证功能只有主线程或线程可以访问以下,没有区别是掌握势垒单屏障的使用,然后完成未完成的线程的线程等待第一
{
}
…
}
# pragma omp屏障 / / /强制立即回避/不等待亚历山德拉,如果在下面的函数前多线程不依赖,你可以使用NOWAIT
# pragma omp并行firstprivate(变量) / / lastprivate(变量)/ /多线程为每个初始值分配一个多线程的程序回到主分配使用主线程
这就是OpenMP的API:
复制代码代码如下所示:
Int(omp_get_num_threads / /获得);线程数目前使用
国际omp_get_num_threads(2 / 3 / / /…)设置要使用的线程数
NT omp_get_thread_num(void); / /返回当前线程。
国际omp_get_num_procs(void); / /处理核心数量可获得的回报
在Ubuntu中,你不需要添加头文件,只添加fopenmp当你编译它。
例如,Emacs的操作命令如下
复制代码代码如下所示:
Emacs的C型。
#包括
主()
{
整型、大小;
# pragma omp并行num_thread(3)私人(等级) / / num_threads用来控制线程数
/ /或omp_set_num_threads(3);
{
级别:omp_get_thread_num();
omp_get_num_threads大小=();
使用printf(%d现在。
}
返回0;
}
控件
编译
gcc fopenmp Omp C O。
Alt + Shift + 1。 / OMP