Например, предположим, что у меня есть переменная, к которой базовый процессор не может получить доступ в одной инструкции (например, 64-разрядное целое число в 32-разрядной архитектуре).
// let x, y, z of the same integral type of size > architecture
#pragma omp parallel shared(x), private(y,z)
y = ...;
z = ...;
if (x == y)
x = z;
Хотя междуif
оператор и фактическое назначение, может ли половина x
быть прочитана до переключения контекста, а другая половина - после?Или гарантируется, что доступ на чтение и запись к разделяемым переменным всегда происходит атомарно?Я не могу найти никаких заявлений по этому поводу в стандарте.