現時点では、以下を使用してプロセスを個別に作成および登録しています。
register(name, spawn(fun() -> myfun())).
次のような名前の N 個の登録済み Pid のリストを作成したいと思います。
pid1
pid2
pid3
.
.
.
pidN
誰でもこれを行う方法を推奨できますか?
現時点では、以下を使用してプロセスを個別に作成および登録しています。
register(name, spawn(fun() -> myfun())).
次のような名前の N 個の登録済み Pid のリストを作成したいと思います。
pid1
pid2
pid3
.
.
.
pidN
誰でもこれを行う方法を推奨できますか?
同じ関数に対して複数のプロセスを生成したい場合は、リスト内包表記を使用して、文字列との連結を使用できますlist_to_atom/1
。
[register(list_to_atom("pid" ++ integer_to_list(X)), spawn(fun() -> myFun() end)) || X <- lists:seq(1,10)].
以下を使用できます。
複数のプロセスで同じ関数を実行し、各プロセスを異なる名前で登録する場合:
lists:foreach(
fun( Name ) ->
register( Name, spawn( fun() -> myfun() end ) )
end,
[ pid1, pid2, pid3 ] ).
または、異なるプロセスで異なる機能を実行する場合:
lists:foreach(
fun( { Name, Func } ) ->
register( Name, spawn( fun() -> Func() end ) )
end,
[ { pid1, f1 }, { pid2, f2 }, { pid3, f3 } ] ).
( f1、f2、f3 - は関数です)
最後に、N 個のプロセスで同じ関数を実行する場合は、次のようにします。
N = 20, %number of processes
lists:map(
fun( Num ) ->
register(
list_to_atom( "pid" ++ integer_to_list( Num ) ),
spawn( fun() -> myfun() end ) )
end,
lists:seq( 1, N ) ).