2016-12-02 2 views
0

Я ищу информацию о том, как Erlang внутренне обрабатывает принимаемый вызов.Как звонит Erlang получать

report(Count) -> 
    receive 
     X -> io:format("Received #~p: ~p~n", [Count, X]), 
    end. 

Получает выполнение на той же теме, что и другие функции? Выполняет ли каждый процесс свой собственный прием? Неужели Эрланг использует «божественный» процесс, который вызывает все полученные?

ответ

4

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

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