programming erlang ch8 - andstudy/forge GitHub Wiki

Chapt 8. 병행 ν”„λ‘œκ·Έλž˜λ°

μŠ€ν„°λ”” 前

    -module(abc).
    -compile(export_all).
    
    %%"ν”„λ‘œμ„ΈμŠ€ 생성 : μ‹€ν–‰ 흐름 μΆ”κ°€"
    process() ->
    	receive
    		Any -> Any
    	end.
    
    
    %%"RPC (CSλͺ¨λΈ)"
    
    start(FUN) -> spawn(FUN).
    
    rpc(Pid, Request) ->
    	Pid ! Request,
    	receive
    		Response -> Response
    	end.
    
    loop() ->
    	receive
    		{ rectangle, W, H }
    			-> io:format("area rectangle.. ~p~n", [W * H]),
    			loop();		
    	end.
    
    
    %%"νƒ€μž„μ•„μ›ƒ μ‚¬μš©"
    
    sleep(T) ->
    	receive
    		
    	after T ->
    		io:format("timeout..~n")
    	end.
    
    
    
    %%"타이머"
    
    timer(T) ->
    	receive
    
    	after T ->
    		io:format("do something..~n"),
    		timer(T)
    	end.
    
    %%"μ‹œκ³„"
    
    clock(T) ->
    	receive
    
    	after T->
    		io:format("time ~p~n", [erlang:now()]),
    		clock(T)
    	end.

μŠ€ν„°λ”” 後