Oracle® Solaris Studio 12.4:OpenMP API 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

9.1 OpenMP 内存模型

当多个线程异步访问同一变量时,这些线程执行的内存访问不一定互为原子操作。一些依赖实现的因素和依赖应用程序的因素会对访问是否为原子操作产生影响。某些变量占用的内存空间可能比目标平台上最大的原子内存操作所占用的空间大。某些变量可能未对齐或者对齐方式未知。有时,使用多个 load(或 store)操作会让代码序列的运行速度更快。因此,编译器和运行时系统可能需要使用多个 load(或 store)操作来访问变量。

当内存更新针对位域变量时,该内存更新还可以读取和写回相邻变量(属于另一个变量的一部分,例如数组或结构元素)的最小大小与基本语言的要求相同。当内存更新针对非位域变量的变量时,该更新将不读取和写回属于另一个变量一部分的相邻变量,例如数组或结构元素。