Нет, вам все еще нужно учитывать безопасность потоков в Erlang, но проблемы гораздо проще решить.
Я прочитал статью , в которой автор указал, что ваше сообщение APIможет вызвать проблемы с многопоточностью.Пример вращался вокруг банковского счета.Его начальный API сообщений имел операции GET и SET.Какой-то код, который хотел внести 100 долларов, получит текущее значение, добавит к нему 100, а затем установит результат.Конечно, это работает, только если один процесс обращается к банковскому счету.Как только два процесса манипулируют балансом, все ставки отключены.
Его решение было изменить API сообщений на DEPOSIT и WITHDRAW (он фактически использует одно сообщение - UPDATE - но вы поняли идею).Это заставляет взаимодействие принимать атомарную семантику - процесс прослушивания будет обрабатывать только один депозит или снятие за раз, и будет блокировать другие запросы, пока первый не будет завершен.
Стоит отметить, что эта проблема по сути та жекак проблема с общей памятью.(Если мы используем сообщения GET и SET для взаимодействия с процессом, мы, по сути, создали некоторую общую память).Другой блоггер сравнивает ets с общей памятью .Однако, пока вы понимаете, где вы ввели конструкции, подобные разделяемой памяти, и регулируете доступ к этой разделяемой памяти, у вас не должно быть проблем с многопоточностью (кроме тупиков, конечно).