0
私はこのエリクールのコードで何が起こっているのか理解しようとしています。 2つのプロセスが生成された後、生成されたプロセスは送信者にメッセージをエコーしますが、iexではメッセージが1つしか表示されません。どうしましたか?送信されたプロセスメッセージが送信者によって再度受信されないのはなぜですか?
defmodule TwoPs do
# a simple echo function - take a pid to send message back to
def echo(pid) do
#wait till the spawned process receives a message, turn around and echo it back to the sender
receive do
msg ->
IO.puts("Received #{msg}")
send pid, {:ok, "Hello #{msg}"}
end
end
#spawn's two processes and sends a message to both...expects an echo back from both spawned processes
def create_ps() do
#spawn the two processes
p1 = spawn(TwoPs, :echo, [self])
p2 = spawn(TwoPs, :echo, [self])
#send a message to the first pid
send p1, "World"
#receive message back from spawned child 1
receive do
{:ok, msg} -> "#{msg}"
end
#send a message to the second pid
send p2, "Bob"
#receive message from the spawned child 2
receive do
{:ok, msg} -> "#{msg}"
end
end
end
IEXでの出力は常に "こんにちはボブ" 私たちは、 "Hello World" の表示されないのはなぜ
iex(17)> TwoPs.create_ps
Received World
Received Bob
"Hello Bob"
のですか?
ありがとうございました。驚くほど速い応答。完全にそれを逃した。私の部分ではダムの間違い – sat