Erlang: Unikanie warunków wyścigu za pomocą gen_tcp: control_process

Implementuję prosty serwer tcp z następującą sekwencją:

{ok, LS} = gen_tcp:listen(Port,[{active, true}, {reuseaddr, true}, {mode, list}]),
{ok, Socket} =  gen_tcp:accept(LS),
Pid = spawn_link(M, F, [Socket]),           
gen_tcp:controlling_process(Socket, Pid) 

Użycie opcji {active, true} może spowodować stan wyścigu, w którym nowy pakiet dociera do procesu gniazda, zanim zostanie wywołany „control_process”, co spowoduje, że wiadomość {tcp, Socket, Data} dotrze do procesu ojca zamiast dziecko.

Jak można tego uniknąć?

questionAnswers(2)

yourAnswerToTheQuestion