前言
OpenMP通过在串行程序中插入编译制导指令, 来实现并行化, 支持OpenMP的编译器可以识别, 处理这些指令并实现对应的功能....需要注意的是该指令只保证代码以并行的方式执行, 但是并不负责线程之间的任务分发. 在并行域执行结束之后, 会有一个隐式的屏障(barrier), 来同步所有的该区域内的所有线程...., 如果没有nowait字句, 所有线程在 single 指令结束处隐市同步点同步, 如果single指令有nowait从句, 则别的线程直接往下执行....它可以保证线程以一定的顺序更新共享变量, 或者保证两个或多个线程不同时修改共享变量.
barrier
同步路障(barrier), 当线程遇到路障时必须要停下等待, 直到并行区域中的所有线程都到达路障点.... master指令和single指令的区别如下:
master指令包含的代码段只有主线程执行, 而single指令包含的代码可以由任意一个线程执行.
master指令在结束处没有隐式同步, 也不可以使用