14. Гармонически взаимодействующие процессы
Статью с таким названием написал Дейкстра, чтобы облегчить жизнь программистам.
По его мнению «Гармоническое взаимодействие» - это когда процессы:
-
либо не взаимодействуют
-
либо взаимодействуют в строго определенных точках кода программ
Эта концепция состоит в следующем:
-
Каждый процесс представляет собой независимый программный модуль, для которого создается иллюзия чисто последовательного исполнения.
-
Процессы не имеют разделяемых данных.
-
Все обмены данными, и вообще взаимодействие, происходят в выделенных точках процессов. В этих точках процесс, передающий данные, останавливается и ждет, пока его партнер будет готов эти данные принять. Аналогично, процесс, принимающий данные, ожидает, пока ему передадут данные.
-
Синхронизация, не сопровождающаяся передачей данных, просто лишена смысла - процессы, не имеющие разделяемых структур данных, совершенно независимы.
Концепция гармонически взаимодействующих процессов очень привлекательна с теоретической точки зрения и позволяет легко писать правильные программы. Однако часто по соображениям производительности оказывается невозможно отказаться от разделяемой памяти.