Erlang otp gen_服务器';s信息、呼叫、广播消息队列?
在编写代码时,我会问自己应该使用哪种类型的消息Erlang otp gen_服务器';s信息、呼叫、广播消息队列?,erlang,message-queue,gen-server,Erlang,Message Queue,Gen Server,在编写代码时,我会问自己应该使用哪种类型的消息call,应该使用哪种类型的消息info 在这个问题下面,另一个长期存在的疑问是info、cast、callmessage之间是否存在优先级差异?这3种消息是否共享同一队列?消息的优先级相同。快速查看gen_server.erl,您将发现接收所有数据的简单循环 loop(Parent, Name, State, Mod, hibernate, Debug) -> proc_lib:hibernate(?MODULE,wake_hib,[
call
,应该使用哪种类型的消息info
在这个问题下面,另一个长期存在的疑问是
info、cast、call
message之间是否存在优先级差异?这3种消息是否共享同一队列?消息的优先级相同。快速查看gen_server.erl,您将发现接收所有数据的简单循环
loop(Parent, Name, State, Mod, hibernate, Debug) ->
proc_lib:hibernate(?MODULE,wake_hib,[Parent, Name, State, Mod, Debug]);
loop(Parent, Name, State, Mod, Time, Debug) ->
Msg = receive
Input ->
Input
after Time ->
timeout
end,
decode_msg(Msg, Parent, Name, State, Mod, Time, Debug, false).
关于:
gen_服务器在发生超时或接收到同步或异步请求(或系统消息)以外的任何其他消息时调用此函数
例如超时、tcp、udp、退出、系统信息和许多其他不适合handle_call或handle_cast的内容。您的意思是什么时候使用
调用
以及什么时候使用cast
info
用于超时或服务器接收到除call
和cast
以外的其他类型的消息时
要决定是使用call
还是cast
我想你应该问这样一个问题:“发件人是否希望等待此类邮件的答复?”。如果是,则使用同步的调用
,如果不是,则使用异步的强制转换
但我已经有一段时间没有使用Erlang了