Книга: Операционная система UNIX
Семантика вызова
Семантика вызова
Вызов локальной процедуры однозначно приводит к ее выполнению, после чего управление возвращается в головную программу. Иначе дело обстоит при вызове удаленной процедуры. Невозможно установить, когда конкретно будет выполняться процедура, будет ли она выполнена вообще, а если будет, то какое число раз? Например, если запрос будет получен удаленной системой после аварийного завершения программы сервера, процедура не будет выполнена вообще. Если клиент при неполучении отклика после определенного промежутка времени (тайм-аута) повторно посылает запрос, то может создаться ситуация, когда отклик уже передается по сети, повторный запрос вновь принимается на обработку удаленной процедурой. В этом случае процедура будет выполнена несколько раз.
Таким образом, выполнение удаленной процедуры можно характеризовать следующей семантикой:
? Один и только один раз. Данного поведения (в некоторых случаях наиболее желательного) трудно требовать ввиду возможных аварий сервера.
? Максимум раз. Это означает, что процедура либо вообще не была выполнена, либо была выполнена только один раз. Подобное утверждение можно сделать при получении ошибки вместо нормального отклика.
? Хотя бы раз. Процедура наверняка была выполнена один раз, но возможно и больше. Для нормальной работы в такой ситуации удаленная процедура должна обладать свойством идемпонентности (от англ. idemponent). Этим свойством обладает процедура, многократное выполнение которой не вызывает кумулятивных изменений. Например, чтение файла идемпонентно, а добавление текста в файл — нет.
- 16.6. Семантика вызовов
- 1.2. Базовый синтаксис и семантика Ruby
- Определение необходимого системного вызова
- Инварианты класса и семантика ссылок
- 8.4.3.2. Функция обратного вызова nftw()
- Контекст системного вызова
- Окончательные шаги регистрации системного вызова
- Доступ к системным вызовам из пространства пользователя
- В заключение о системных вызовах
- Использование дейтаграмм для удаленного вызова процедур
- 23.2. Настройка быстрого вызова программ и папок
- Семантика паттернов