【问题标题】:gen server synchronous and asynchronous callsgen 服务器同步和异步调用
【发布时间】:2011-10-08 11:54:18
【问题描述】:

假设我有一个只处理异步调用的 gen_server(因此只实现了 handle_cast),我应该保留 handle_call 并让它只返回通用的 ok 值,还是应该删除那部分代码并接受警告?

【问题讨论】:

    标签: erlang erlang-otp gen-server


    【解决方案1】:

    我会选择总是返回{reply, ok, State}。将警告视为错误(即停止编译并修复它们)。这样,当真正的警告出现时,它们就不会隐藏在噪音后面。

    将所有对行为的调用包装在您自己的函数中是一个好习惯,例如:

    delete(Something) ->
        gen_server:call(?MODULE, {delete, Something}).
    

    在这种情况下,不要导出任何使用handle_call/2的函数。

    【讨论】:

      【解决方案2】:

      处理所有调用不是 gen_server 的要求,不管你是否使用它们?

      【讨论】:

      • 我知道,我问是因为我朋友问我返回“ok”的安全性,即使服务器没有执行任何操作...
      • 是的,只返回 {reply, ok, State} 是完全可以接受的,并且对于忽略一个动作是正常的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      相关资源
      最近更新 更多