Основы операционных систем


Команда 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); critical section lock = 0; remainder section }




Начало  Назад  Вперед