Теория распараллеливания и синхронизация. Демьянович Ю.К - 26 стр.

UptoLike

2) Если один процесс вставляет элементы в очередь, представ-
ленную связанным списком, а д ругой удаляет элементы из такой
очереди. Вставка и удаление связаны с изменением некоторых ссы-
лок и конца очереди. Необходимо, чтобы вставка проходила как
единая операци я; то же касается и удаления.
Неделимые действия задаются с помощью угловых скобок <,
>, так что, например, выражение < S > должно быть выполнено
неделимым образом.
Для синхронизации используется оператор await; в частности
строка
< await (B) S; >
означает, что при выпол нен ии условия B последовательность опе-
раторов S должна быть выполнена неделимым образом. При этом
ни одно промежуточное действие при выполнении последователь-
ности операторов S не будет видно другим процессам. Например,
выполнение выражения
< await (j > 0) j = j 1; >
откладывается до того момента, когда j станет положительным:
как только j становится положительным производится недели мое
действие уменьшение j на 1.
Общая форма оператора await определяет как исключение, так
и синхронизацию по условию.
Для определения лишь исключения можно использовать со-
кращенную форму оператора await, а имен но
< S; >
Для задания только условной синхронизации пишут
< await (B); >
Например, выполн ени е процесса
< await (count > 0); >
откладывается до момента, когда count станет положительным.
Если выполнено условие “не больше одного”, то < await (B); >
может быть реализовано в виде
27