Есть ли способ написать стандартный C, который предсказуемо обрабатывает сбои? - PullRequest
0 голосов
/ 03 июня 2019

Предположим, у меня есть некоторый код, который работает с общей памятью, а также вызывает некоторые функции, которые могут привести к сбою программы.Авария зависит от платформы, но в основном она просто завершает процесс, когда происходит что-то плохое.

shared_memory_structure->field = 1;
function_that_might_crash();

Я хочу быть уверен, что все записи в общую память, которые в исходном коде предшествуют сбоюлинии, на самом деле записываются в память до аварииДругими словами, что компилятор ничего не переупорядочивает вокруг строки сбоя и ничего не кэширует в регистрах.

Есть ли хороший стандартный способ добиться этого?

volatile может помочь.Также может помочь использование «барьера» для конкретного компилятора, но в Интернете есть примеры, демонстрирующие, что этого может быть недостаточно

...