[置顶] OpenMP编程->互斥锁函数
2014-04-13 18:15
309 查看
//互斥锁同步 #pragma opm atomic x< + or * or - or * or / or & or | or << or >> >=expr void test9() { int sum = 0; std::cout << "Before: " << sum << std::endl; omp_set_num_threads(3); #pragma omp parallel for for (int i = 0; i < 20000; ++i) { #pragma omp atomic sum++; //cout<<"ID "<<omp_get_thread_num()<<endl; } std::cout << "After: " << sum << std::endl; }
//临界区声明方法,可以对某个并行程序块进行防护。 void test10() { int sum = 0; std::cout << "Before: " << sum << std::endl; #pragma omp parallel for for (int i = 0; i < 100; ++i) { #pragma omp critical (a) { test9(); sum = sum + i * 2; } } std::cout << "After: " << sum << std::endl; }
/* 对for循环中的所有内容进行加锁保护,同时只能有一个线程执行for循环中的内容。 */ static omp_lock_t lock; void test11() { omp_init_lock(&lock); // 初始化互斥锁 #pragma omp parallel for for (int i = 0; i < 5; ++i) { omp_set_lock(&lock); //获得互斥器 std::cout << omp_get_thread_num() << "+" << std::endl; std::cout << omp_get_thread_num() << "-" << std::endl; omp_unset_lock(&lock); //释放互斥器 } omp_destroy_lock(&lock); //销毁互斥器 }
相关文章推荐
- OpenMP编程->互斥锁函数
- OpenMP编程->库函数
- 4.有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值.
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- Linux应用程序开发笔记->文件编程之系统调用方式相关函数
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- OpenMP编程->同步机制
- SQL编程->函数(一)
- windows编程->进程函数
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- OpenMP编程->同步机制
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- Linux应用程序开发笔记->文件编程之库函数
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- OpenMP(四)线程同步之互斥锁函数
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- 【c语言】有一函数:x < 0 ,y = -1;x = 0,y = 0;x > 0,y = 1,编程输入一个x值,要求输出对应的y
- C++模板编程->函数指针模板参数
- OpenMP编程->调度优化