Я пытаюсь работать с функциями stdatomic.h, в частности с atomic_flag_test_and_set.Я не вижу никаких ошибок, но хочу знать, всегда ли то, что я делаю, безопасно.У меня есть такая структура:
typedef struct Mystruct {
int somedata;
atomic_flag flag;
} Mystruct;
Позже, когда я создаю mystruct и использую его экземпляр флага, я делаю это так:
if(atomic_flag_test_and_set(&mystructInstance->flag)) {
// do something
}
Является ли оценка&mystructInstance->flag
всегда завершается до проверки на атомарную операцию?Я бы предположил, так как это должна быть одна инструкция процессора (или что-то, что эмулирует одну инструкцию процессора), но я хочу убедиться.