OpenMP编程->互斥锁函数
2014-04-13 18:15
357 查看
//互斥锁同步 #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编程->互斥锁函数
- java运行时内存分配详解
- ubuntu12.04.4下MySQLdb-python的使用
- 许令波老师的java的IO机制分析文章
- C++细节知识(1)
- [翻译]创建ASP.NET WebApi RESTful 服务(8)
- phpMyAdmin安装配置方法全过程,及问题解决
- Java面向对象之类和对象
- C#操作Active Directory(AD)详解
- GitHub详细教程
- Spring transaction事宜 roll back各种回滚
- VIM 编译C、C++、Fortran脚本
- struts2的动手搭建
- Python读写mongo时区问题
- C++虚函数大总结
- java桌面项目打包_by icewee_写得太棒了,直接转载了
- Java运算符
- Qt学习——聊天的QQ列表QToolBox类
- php脚本超时时间设置
- Python中第三方的用于解析HTML的库:BeautifulSoup