如何手动将消息发送给我刚刚生成的进程?

问题描述 投票:3回答:3

如何发送消息以使用Erlang处理?我确实开始了一个过程,并且输出显示pid为<0.39.0>。我的问题是如何手动向此过程(<0.39.0>)发送消息。

erlang pid message-passing erl
3个回答
6
投票

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

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

一种更好的方法是在开始该过程时保存PID:

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

3
投票
([email protected])100> P = list_to_pid("<0.39.0>").
<0.39.0>
([email protected])101> P!aaa.
aaa

2
投票

除了其他解决方案之外,REGISTER函数可能会有所帮助。

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

您可以将msg发送到各地的regpid。

© www.soinside.com 2019 - 2024. All rights reserved.