不确定是否明智,但我正在研究Erlang,看了一下gen_event,想知道在完全面向事件的编程中使用它的开销,例如我在Node.Js中使用的方式。
在Erlang中,将任务交给事件处理程序与生成新线程执行相同任务之间的开销是多少?
谢谢。
不确定是否明智,但我正在研究Erlang,看了一下gen_event,想知道在完全面向事件的编程中使用它的开销,例如我在Node.Js中使用的方式。
在Erlang中,将任务交给事件处理程序与生成新线程执行相同任务之间的开销是多少?
谢谢。
%% Ask a server to perform a request and await the response from the worker.
request(Server, R) ->
Server ! {new_request, R, self()},
receive {response, Response} -> Response end.
%% Create a server.
start() ->
spawn(?MODULE, server, []).
%% The server code
server() ->
receive
{new_request, R, Sender} ->
%% Spawn a process to handle this request
spawn(?MODULE, process_request, [R, Sender]),
server()
end.
%% The worker code
process_request(R, Sender) ->
A = do_io(),
B = do_cpu_bound_thing(A),
C = do_io(C),
Sender ! {response, C}. % Return the response to the sender
%% Process shuts down cleanly here as there's nothing more to do.