临界区用在可能产生数据访问竞争的地方,用法:#pragma omp critical (name)
(name可省略)。保证每次只有一个线程进入。
注意:critical语句不允许互相嵌套
例:在一个并行域内的for任务分担域中,各个线程逐个进入到critical保护的区域内,比较当前元素的最大值得关系并可能进行最大值的更替,从而避免了数据竞争的情况。
#include <stdio.h>
#include <omp.h>
int main()
{
int i, max_x = -