c - 编写库时使用 OpenMP

标签 c concurrency openmp static-libraries

开发静态链接库时,如何使用 OpenMP 保护访问共享数据的代码免受数据争用?

如果我只是在需要顺序运行的部分上使用#pragma omp critical,那么如果库的客户端使用不同的线程实现(例如pthreads),我会没事吗?关键部分是否作为互斥体编译到库中?

最佳答案

查看latest OpenMP specification ,它指出“关键”确保一次只有“争用组”中的一个线程执行该 block 。根据我的理解,争用组的定义仅涵盖 OpenMP 线程。因此,从技术上讲,OpenMP 实现的编写方式可以使 ritic 无法与其他线程库一起使用。

关于c - 编写库时使用 OpenMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52957645/

相关文章:

c++ - 优化数组的 c++ 算术计算的常用策略是什么?

c - C 中 shell 实现中的多个管道

c - 在没有临时变量的情况下交换 2 个函数指针

c - 尝试乘以 2 个矩阵时出现段错误 11

并发访问文件 linux

c++ - OpenMP 如何实现对临界区的访问?

c - OpenMP 未初始化值和 Valgrind

java - LRU缓存的并发版本

c# - .NET多代理程序仿真(运行时加载/卸载)的插件体系结构

构建包中的 Rcpp openmp 插件