나는Erlang의 프로세스를보다 효율적으로 생성하는 방법은 무엇입니까?
check_requests(Timestamp,Plan,AddInfo)->
{Day,_Month,_Year,Hour,Minute,Second,Micro} = Timestamp,
ExpiredRequests = lists:filter(fun(Elem) ->
{_ID,Time,_Key,_Action} = Elem,
Time < {Day,Hour,Minute,Second,Micro}
end, Plan),
NewPlan = Plan -- ExpiredRequests,
make_requests(ExpiredRequests,AddInfo),
NewPlan.
make_requests([],_)->ok;
make_requests([ExpiredRequest|Rest],AddInf)->
{_ID,_Time,Key,Action} = ExpiredRequest,
spawn(?MODULE,request,[AddInf,Action,Key]),
make_requests(Rest,AddInf).
주요 아이디어는 내가 각각의 요청이 만료 될 때 시간을 부여하고 실행해야 계획을 가지고있다이 두 가지 기능을 가지고 있습니다. 만료시, 시간이 만료 될 수있는 다른 요청과 동시에 요청을 실행하여 새 프로세스로 요청 기능을 생성합니다. 자, 내가 수백만 건의 요청을한다면, 나는 수백만 가지의 프로세스를 갖게 될 것이고 나는 그것이 바람직하지 않다고 생각한다. 요청 실행은 최대 1 분 동안 지속될 수 있습니다. 내가 생성 한 함수가 끝나면 프로세스가 어떻게되는지 알고 싶습니다. 살해 됐나요? 또는 여전히 존재하고 가비지 수집해야합니까? 나는 동시 요청이 필요하고 어떻게 구현할 수 있을지 전혀 모른다. 또한이 경우 도움이 될 수있는 OTP 동작이 있습니까? 아직 OTP를 공부하지는 않았지만 얼랭 (Erlang) 프레임 워크의 중간에 있습니다.