Готовый перевод Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Модели конкурентного программирования
Модели конкурентного программирования
В разных языках программирования доступны разные модели конкурентного программирования. Например модель акторов в Erlang, взаимодействующие последовательные процессы (communicating sequential processes, CSP) в Golang, программная транзакционная память (software transactional memory, SТМ) в Clojure, Ractors (ранее Guilds) в Ruby 3.
Изображение 4.5 Модель акторов
Акторы и CSP считаются похожими: разные исполнительные блоки отправляют сообщения друг другу. Они хранят данные о частных состояниях внутри, не делясь ими и не нуждаясь в блокировках. Они делятся памятью посредством общения, а не общаются посредством разделения памяти.
Изображение 4.5 Модель CSP
У акторов и CSP есть некоторые отличия: процессы в CSP анонимны, а у акторов есть идентификация; Каналы в CSP идентифицируются, а в системе акторов - нет; акторы могут отправлять данные асинхронно, а процессы в CSP — нет.
Изображение 4.6 Модель STM
Программная транзакционная память (STM) — это модель, в которой используется общая память, но без использования блокировок, что аналогично работе с конкурентными транзакциями базы данных, когда несколько клиентов изменяют одну и ту же общую память.
Изображение 4.6 Модель Гильдий (Guilds)
Гильдии (Guilds) построены с использованием концепций CSP, STM и многопоточности. Это самая сложная и новая модель конкурентного программирования. Одна гильдия может содержать несколько потоков, они могут содержать несколько файберов или корутин. Только владелец гильдии может получить доступ к изменяемым данным, поэтому блокировки для нескольких гильдий не требуются. Гильдии могут обмениваться данными, копируя и передавая право собственности на изменяемые данные. Доступ к неизменяемым данным есть у всех гильдий.
Мы не будем углубляться в темы STM и гильдий в этой книге, если вам интересно, вы можете найти дополнительную информацию в Интернете.
Модель конкурентности, используемая сервером Swoole это смесь нескольких процессов и модель CSP с использованием нескольких корутин внутри процесса. Различные процессы также могут совместно использовать глобальные данные с Swoole Table. В других разделах книги мы покажем вам, как модель CSP работает в PHP с корутинами и каналами Swoole.
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод
Переведено на Нотабеноиде
http://notabenoid.org/book/81342/496687
Переводчики: bubenok
Настройки
Готово:
