-module(pmap).
-export([pmap/2]).
pmap(F, L) ->
S = self(),
Pids = lists:map(fun(I) ->
spawn(fun() -> do_fun(S, F, I) end)
end, L),
gather(Pids).
gather([H|T]) ->
receive
{H, Result} -> [Result|gather(T)]
end;
gather([]) ->
[].
do_fun(Parent, F, I) ->
Parent ! {self(), (catch F(I))}.
原文:http://my.oschina.net/yang1992/blog/501468