В эрланге возможно ли одновременное чтение данных, принадлежащих другому процессу? - PullRequest
0 голосов
/ 27 июня 2011

Мое понимание системы передачи сообщений заключается в том, что она сериализуется, и поэтому все операции чтения из разных процессов сериализуются, даже если данные не меняются. Я хотел бы, чтобы данные читались одновременно, если это возможно, чтобы использовать преимущества распределенных вычислений. Возможно ли это?

Ответы [ 2 ]

6 голосов
/ 27 июня 2011

Вы правы в том, что сообщения будут обрабатываться последовательно в процессе их получения.

Если данные действительно статичны (ну, даже если они иногда изменяются), рассмотрите возможность использования таблицы ETS для такого сценария. Таблицы ETS высоко оптимизированы для одновременного доступа, когда это применимо. Если кто-то не пишет в таблицу (или строку) ETS, все клиенты могут одновременно читать данные из таблицы.

1 голос
/ 27 июня 2011

Если у вас разные процессы на одном компьютере (IMO, это не распределенные вычисления), двоичный тип не сериализуется, он передается по ссылке.Таким образом, вы можете читать большой блок данных многими процессами, фактически не копируя их.Сама идея «одновременного чтения данных» в действительно распределенном мире мне не кажется правильной (ETS не является исключением).

PS Ну, в последнем утверждении я имел в виду «это не так»не спасет вас от сериализации ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...