如何在Erlang中编写一个简单的接收循环

mar*_*rcc 1 erlang

假设我在Erlang中有2个进程,每个进程都有一个运行的接收循环.我想从ProcessB向ProcessA发送一个信号,但ProcessA实际上并不需要对它做任何事情.ProcessA只需要知道ProcessB发送了消息.

以下是我目前实施的方法:

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.  
Run Code Online (Sandbox Code Playgroud)

它工作正常.但出于好奇,如何在没有io:format线的情况下写出这个?(我需要进程A阻塞,直到收到来自B的消息,这是更大的Yaws/Yapp的一部分,服务器需要响应才能显示页面.)

Gor*_*rie 7

你真的应该构建一个OTP应用程序,而进程B应该是一个gen_server.

发送语义和构建自己的发送/接收协议的消息都非常好,但除非你真的知道你在做什么,否则你将开始构建不可维护的服务器.

我的建议是坐下来找出如何使您的应用程序成为一个结构合理的标准OTP应用程序,以便您将Yaws作为应用程序树的一部分启动,并在正常的OTP框架内完成ProcessA和ProcessB的所有其他工作.


Sim*_*rim 6

你可以用像nop这样的原子替换io:format