Multithreading OpenMP刷新和所有线程的一致性

Multithreading OpenMP刷新和所有线程的一致性,multithreading,locking,openmp,memory-fences,Multithreading,Locking,Openmp,Memory Fences,当某些线程执行omp\u set\u lock时,将执行隐式刷新 但这是否意味着在这个特定线程刷新之后,所有其他线程都会将其私有视图更新为共享内存中的值,即使它们自己不执行刷新。或者他们仍然会从私有视图读取值吗?否:为了获得一致的视图,所有线程都必须执行刷新。本规范第1.4.3节对此进行了解释。这是否意味着线程仅在刷新操作时回写内存。直到它永远不会写回?@user3639559,在没有刷新操作的情况下,您没有任何保证-OpenMP实现可以选择直接写入内存,也可以将写入延迟到下一次刷新。请阅读规范

当某些线程执行
omp\u set\u lock
时,将执行隐式刷新


但这是否意味着在这个特定线程刷新之后,所有其他线程都会将其私有视图更新为共享内存中的值,即使它们自己不执行刷新。或者他们仍然会从私有视图读取值吗?

否:为了获得一致的视图,所有线程都必须执行刷新。本规范第1.4.3节对此进行了解释。

这是否意味着线程仅在刷新操作时回写内存。直到它永远不会写回?@user3639559,在没有刷新操作的情况下,您没有任何保证-OpenMP实现可以选择直接写入内存,也可以将写入延迟到下一次刷新。请阅读规范的第1.4节,它写得相当好。