timer:sleep(T)的实现:
receive
after T -> ok
end
其中有个问题,如果sleep或者after的时间为1000ms时,cpu占用很高,测试代码如下:
调用ctrl:start(20,1000).cpu占用约在30%;
调用ctrl:start(20,999).只要不是1000,cpu基本不占,erlang的bug?
receive
after T -> ok
end
其中有个问题,如果sleep或者after的时间为1000ms时,cpu占用很高,测试代码如下:
-module(ctrl).
-compile(export_all).
start(0, _Ms) ->
ok;
start(N, Ms) ->
timer:sleep(10),
spawn(?MODULE, test, [Ms]),
start(N-1, Ms).
test(Ms) ->
test(Ms, 20).
test(_Ms, 0) ->
ok;
test(Ms, N) ->
timer:sleep(Ms),
test(Ms, N-1).
调用ctrl:start(20,1000).cpu占用约在30%;
调用ctrl:start(20,999).只要不是1000,cpu基本不占,erlang的bug?