Предположим, что у меня есть 2 процесса в Erlang, и каждый процесс имеет цикл приема. Я хочу отправить сигнал ProcessB в ProcessA, но ProcessA фактически не должен ничего с ним делать. ProcessA должен знать, что ProcessB отправил сообщение.Как написать простой цикл приема в Erlang
Вот как я это реализуется в настоящее время:
receive
{message_from_process_b} ->
io:format("received a message from b", []);
end,
%% at this point I know that I've received the message from B.
Он отлично работает. Но из любопытства, как я могу написать это без линии io:format
? (Мне нужно, чтобы процесс A блокировался до получения сообщения от B, это часть более крупного Yaws/Yapp, и серверу требуется ответ, прежде чем он сможет отобразить страницу.)
Спасибо. Я планирую это. Я все еще изучаю Эрланг, и даже книга Джо упоминает, что он пишет код, а затем кладет на него все вещи OTP. Я беру этот подход, чтобы посмотреть, что произойдет. Я понимаю gen_server и супервизоров, но еще не реализовал его с нуля. Определенно - благодарю вас за совет. – marcc
Да, проблема в том, что Джо никогда не использует OTP - он всегда закатывает свои собственные серверы: (Он глупо упомянул, что на Конференции пользователя Erlang в Стокгольме другой год и все его избили). Также есть новая книга Эрланг от O'Reilly http://www.amazon.co.uk/Erlang-Programming-Francesco-Cesarini/dp/0596518188/ref=sr_1_1?ie=UTF8&s=books&qid=1247175390&sr=8-1 –