как я могу преобразовать неатомарную операцию в атомарную

Я пытаюсь понять атомарные и неатомные операции. Что касается операционной системы, то также относительно C. Согласно странице википедии здесь

Рассмотрим простой счетчик, который могут увеличиваться различными процессами.
Неатомарная

Наивная, неатомарная реализация:
считывает значение из ячейки памяти;
добавляет единицу к значению;
записывает новое значение обратно в ячейку памяти.

Теперь представьте, что два процесса работают, увеличивая одну общую ячейку памяти:
первый процесс считывает значение в ячейке памяти;
первый процесс добавляет единицу к значению;
но прежде чем он сможет записать новое значение обратно в ячейку памяти, он приостанавливается, и второй процесс разрешается запускаться:
второй процесс считывает значение в ячейке памяти, то же значение, что и первый процесс;
второй процесс добавляет единицу к значению;
второй процесс записывает новое значение в ячейку памяти.

Как можно превратить вышеупомянутую операцию в противную? Я понимаю атомарные операции так, что все, что выполняется без прерывания, является атомарным. Так, например,

int b=1000;
  b+=1000;

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

5
задан Registered User 10 July 2011 в 07:24
поделиться