【发布时间】:2016-06-27 18:49:49
【问题描述】:
我目前正在阅读“Programming Elixir”一书,刚刚发现这个以并行方式实现的“map”示例:
defmodule Parallel do
def pmap(collection, fun) do
me = self
collection
|> Enum.map(fn (elem) ->
spawn_link fn -> (send me, { self, fun.(elem) }) end end)
|> Enum.map(fn (pid) ->
receive do { ^pid, result } -> result end
end)
end
end
对代码的注释说:“注意它如何在接收块中使用^pid 依次获取每个 PID 的结果。如果没有这个,我们将按随机顺序返回结果。”。有人可以澄清一下吗?
【问题讨论】:
标签: elixir