Какова область применения atomic_thread_ fence?
* Пожалуйста, поймите, что я не из англоговорящей страны, поэтому, если вы не поняли мой вопрос, пожалуйста, дайте мне знать, чтобы я мог объяснить другими словами. J
Является ли область ограждения atomic_thread_fence единицей области, которая была обозначена как "{}"?
Например,MainActivity C++
//section A
if(A == 1)
{
//section B
atomic_thread_fence(..);
//section C
}
//section D
Что касается приведенного выше кода, я хотел бы знать, применяется ли ограждение только в разделе B и разделе C, или оно применяется в других разделах.
Благодаря.~
1 ответ
Заборы не имеют понятия о сфере применения. Вместо этого у них есть понятие нагрузок / хранилищ, которые находятся перед ограждением, и нагрузок / хранилищ, которые находятся после ограждения: в вашем примере, нагрузки / хранилища прежде включают в себя те из секций B и A (и до этого). Нагрузки и склады после забора включают в себя секции C и D (и после этого).
И забор будет действовать только тогда, когда A == 1
(то есть, забор, который находится в ветке, которая не занята, не будет иметь никакого побочного эффекта).