2016-06-28 4 views
1

Использует ли Erlang несколько ядер при запуске gen_server? Если у меня есть пара разных handle_cast в gen_server, и их часто называют, они могут работать параллельно? Я спрашиваю, потому что у меня есть проект, где один handle_cast вводит данные в очередь, а другой удаляет данные из одной очереди и обрабатывает их. Очередь сохраняется в состоянии gen_server. Проблема, как я вижу, заключается в том, что я должен вернуть новую очередь (при добавлении нового элемента или удалении извлеченного элемента) при возврате состояния. Если они работают параллельно, то кажется, что в очереди могут развиваться условия гонки или несоответствия. Это так?handle_cast, несколько ядер и очередей

ответ

4

Ответ на ваш вопрос - нет. A gen_server работает в одном процессе Erlang. Один процесс не может быть разбит на несколько действий, которые могут выполняться одновременно.

Смежные вопросы