【问题标题】:How to manually send a message to a process which I just spawned?如何手动向我刚刚生成的进程发送消息?
【发布时间】:2012-12-19 15:30:56
【问题描述】:

如何发送消息以使用 Erlang 进行处理?我确实启动了一个进程,输出显示 pid(进程标识符)是<0.39.0>。 我的问题是如何手动向此进程 (<0.39.0>) 发送消息。

【问题讨论】:

    标签: erlang pid message-passing erl


    【解决方案1】:

    虽然 list_to_pid/1 确实可以用于构造 PID 并使用它来发送消息,但不鼓励使用它:

    此 BIF 旨在用于调试和在 Erlang 操作中使用 系统。不应在应用程序中使用它。

    更好的方法是在启动进程时保存 PID:

    1> P = spawn(fun() -> receive _ -> ok end end).
    <0.34.0>
    2> P!hi.
    hi
    

    【讨论】:

      【解决方案2】:
      (emacs@yus-iMac.local)100> P = list_to_pid("<0.39.0>").
      <0.39.0>
      (emacs@yus-iMac.local)101> P!aaa.
      aaa
      

      【讨论】:

        【解决方案3】:

        除了其他解决方案,REGISTER func 可能会有帮助。

            register(regpid,spawn(fun() -> receive _ ok end end).
            regpid ! msg.
        

        你可以在任何地方向 regpid 发送消息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-17
          • 2011-06-12
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 2014-11-17
          相关资源
          最近更新 更多