1

这是上一个问题的继续

我有 gen_server:

start(UserName) ->
    case gen_server:start({global, UserName}, player, [], []) of
    {ok, _} ->
        io:format("Player: " ++ UserName ++ " started");
    {error, Error} ->
        Error
    end
    ...

如何正确地向这个 gen_server 发送消息。例如:在我制作的另一个文件中:

gen_server:cast(test, message).

在我的 gen_server 文件中,我有:

handle_cast(message, State) ->
    io:format("Message receiving \r\n"),
    {noreply, State};

我用测试名称启动我的 gen_server:

服务器:开始(测试)。测试开始

当我调用gen_server:cast(test, message).它时,shell 中没有任何输出。我如何检查 handle_cast 调用与否?

谢谢你。

4

1 回答 1

4

代替

gen_server:cast(test, message).

gen_server:cast({global, test}, message).

如果您将 name 注册为 {global, name},则必须将其称为 {global, name}

如果您的处理程序被调用,它将在 shell 中打印“消息接收 \r\n”。你是通过 io:format 调用实现的。

于 2011-04-20T08:57:43.657 回答