似乎gen_server:handle_cast/3
和gen_server:handle_info/3
的功能非常相似。我知道handle_info/3
用于处理超时事件。
有没有其他规则可以使用它们?在我看来,我更喜欢使用handle_info/3
来处理异步消息。因为使用语法糖!
会更短。
答案 0 :(得分:6)
gen_server
是对典型进程消息循环的抽象。它为您提供了call
和cast
之类的API来向进程发送消息,因为您还拥有进程的PID
,任何代码都可以向进程发送消息而无需通过call
或cast
API,在这些情况下调用handle_info
回调。如果您想使用!
运算符向您的流程发送消息,那么您可能不需要gen_server
或者如果您想使用gen_server
,则建议使用{{ 1}}和call
API用于您的服务器功能,cast
用于其他类型的消息。