atomic_thread_ fence的范围是什么?

时间:2018-07-18 10:06:05

标签: c++ atomic memory-barriers

**请注意,我不是来自说英语的国家/地区,因此,如果您听不懂我的问题,请告诉我,以便用其他方式进行解释。

atomic_thread_fence的围栏作用域是否是已指定为“ {}”的作用域单位?

例如, MainActivity C ++

//section A
if(A == 1)
{
   //section B
   atomic_thread_fence(..);
   //section C
}
//section D

关于上述代码,我想知道围栏是否仅适用于B部分和C部分,或者是否也适用于其他部分。

谢谢。〜

1 个答案:

答案 0 :(得分:3)

栅栏没有范围的概念。取而代之的是,它们的观念是在栅栏之前的装载/存储,在栅栏之后的装载/存储:在您的示例中,装载/存储之前包括B和A部分(以及之前)。在围栏之后的 中加载和存储C部分和D部分(及其后)。

仅当A == 1时,篱笆才会起作用(即,位于未采取分支的篱笆上不会有任何副作用)。