Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Модели конкурентного программирования

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Модели конкурентного программирования

bubenok 11.03.21 в 05:45

0

В разных языках программирования доступны разные модели конкурентного программирования. Например модель акторов в Erlang, взаимодействующие последовательные процессы (communicating sequential processes, CSP) в Golang, программная транзакционная память (software transactional memory, SТМ) в Clojure, Ractors (ранее Guilds) в Ruby 3.

bubenok 09.02.22 в 07:05

0

Изображение 4.5 Модель акторов

bubenok 09.02.22 в 07:06

0

Акторы и CSP считаются похожими: разные исполнительные блоки отправляют сообщения друг другу. Они хранят данные о частных состояниях внутри, не делясь ими и не нуждаясь в блокировках. Они делятся памятью посредством общения, а не общаются посредством разделения памяти.

bubenok 09.02.22 в 07:12

0

Изображение 4.5 Модель CSP

bubenok 09.02.22 в 07:13

0

У акторов и CSP есть некоторые отличия: процессы в CSP анонимны, а у акторов есть идентификация; Каналы в CSP идентифицируются, а в системе акторов - нет; акторы могут отправлять данные асинхронно, а процессы в CSP — нет.

bubenok 09.02.22 в 07:15

0

Изображение 4.6 Модель STM

bubenok 09.02.22 в 07:15

0

Программная транзакционная память (STM) — это модель, в которой используется общая память, но без использования блокировок, что аналогично работе с конкурентными транзакциями базы данных, когда несколько клиентов изменяют одну и ту же общую память.

bubenok 09.02.22 в 07:18

0

Изображение 4.6 Модель Гильдий (Guilds)

bubenok 09.02.22 в 07:19

0

Гильдии (Guilds) построены с использованием концепций CSP, STM и многопоточности. Это самая сложная и новая модель конкурентного программирования. Одна гильдия может содержать несколько потоков, они могут содержать несколько файберов или корутин. Только владелец гильдии может получить доступ к изменяемым данным, поэтому блокировки для нескольких гильдий не требуются. Гильдии могут обмениваться данными, копируя и передавая право собственности на изменяемые данные. Доступ к неизменяемым данным есть у всех гильдий.

bubenok 09.02.22 в 07:24

0

Мы не будем углубляться в темы STM и гильдий в этой книге, если вам интересно, вы можете найти дополнительную информацию в Интернете.

bubenok 09.02.22 в 07:26

0

Модель конкурентности, используемая сервером Swoole это смесь нескольких процессов и модель CSP с использованием нескольких корутин внутри процесса. Различные процессы также могут совместно использовать глобальные данные с Swoole Table. В других разделах книги мы покажем вам, как модель CSP работает в PHP с корутинами и каналами Swoole.

bubenok 09.02.22 в 10:35

0
Минутку...