我启动了一个erlang smp应用程序,就像这样:
Erlang R15B01(erts-5.9.1)[source] [64-bit] [smp:12:12] [async-threads:0] [hipe] [kernel-poll:true]
然后我用这段代码来测试smp函数:
Fun = fun() ->
L = lists:seq(0, 1000000),
F = fun(_I, Acc) ->
I = util:rand(0,1000000),
case lists:member(I, Acc) of
true -> L1 = lists:delete(I, Acc),
L1 ++ [I];
_ -> Acc ++ [I]
end
end,
lists:foldr(F, L, L)
end.
P = spawn(Fun).
P1 = spawn(Fun).
P2 = spawn(Fun).
在早期,它运行完美,它使用大约300%的CPU,平均负载大约为3。
但几天之后,再次运行此代码,它只使用大约100%的cpu,并且不能使用其他内核。
是erlang smp的错误吗?或者只是linux限制?
谢谢