Нет, вам все равно нужно учитывать безопасность потоков в Erlang, но проблемы намного проще решить.
Я читал an article, в котором автор указал, что ваш API сообщений может вызывать проблемы с потоками. Пример вращался вокруг банковского счета. Его исходный API сообщений имел операции GET и SET. Некоторый код, который хотел внести $ 100, должен ПОЛУЧИТЬ текущее значение, добавить к нему 100 и затем установить результат. Конечно, это работает только в том случае, если один процесс имеет доступ к банковскому счету. Когда два процесса управляют балансом, все ставки отключены.
Его решение состояло в том, чтобы изменить API сообщений на DEPOSIT и WITHDRAW (он фактически использует одно сообщение - ОБНОВЛЕНИЕ - но вы получаете идею). Это заставляет взаимодействие воспринимать атомную семантику - процесс прослушивания будет обрабатывать только один депозит или изъятие за раз и блокирует другие запросы до тех пор, пока первое не будет завершено.
Стоит отметить, что эта проблема по существу такая же, как проблема с общей памятью. (Если мы используем сообщения GET и SET для взаимодействия с процессом, мы по существу создали некоторую общую память). Еще один блоггер compares ets to shared memory. Однако, до тех пор, пока вы понимаете, где вы вводите конструкции с общей памятью и регулируете доступ к этой общей памяти, вы не должны иметь проблем с потоками (за исключением взаимоблокировки, конечно).
+1 точно вправо –
Но вам нужна «безопасность процесса» :) –