0

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

谢谢你

4

0 回答 0