我启动了一个 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限制??
谢谢你