Команда Swap (Обменять значения)

Выполнение команды Swap, обменивающей два значения, находящихся в памяти, можно проиллюстрировать следующей функцией

void Swap (int *a, int *b){

int tmp = *a;
*a = *b;
*b = tmp;

}

Применяя атомарную команду Swap, мы можем реализовать предыдущий алгоритм, введя дополнительную логическую переменную key локальную для каждого процесса:

shared int lock = 0;
int key;

while (some condition) {

key = 1;
do Swap(&lock,&key);
while (key);