Erlang: Race Condition mit gen_tcp: controlling_process vermeiden

Ich implementiere einfache TCP-Server mit der folgenden Reihenfolge:

{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) 

Die Verwendung der Option {active, true} kann zu einer Race-Bedingung führen, bei der ein neues Paket im Socket-Prozess eintrifft, bevor der Befehl "controlling_process" aufgerufen wird. Dies würde dazu führen, dass die Nachricht {tcp, Socket, Data} im Vater-Prozess ankommt Kind.

Wie könnte dies vermieden werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage