何时使用handle_info和handle_cast

时间:2014-05-12 08:18:37

标签: erlang

似乎gen_server:handle_cast/3gen_server:handle_info/3的功能非常相似。我知道handle_info/3用于处理超时事件。

有没有其他规则可以使用它们?在我看来,我更喜欢使用handle_info/3来处理异步消息。因为使用语法糖!会更短。

1 个答案:

答案 0 :(得分:6)

gen_server是对典型进程消息循环的抽象。它为您提供了callcast之类的API来向进程发送消息,因为您还拥有进程的PID,任何代码都可以向进程发送消息而无需通过callcast API,在这些情况下调用handle_info回调。如果您想使用!运算符向您的流程发送消息,那么您可能不需要gen_server或者如果您想使用gen_server,则建议使用{{ 1}}和call API用于您的服务器功能,cast用于其他类型的消息。