相关疑难解决方法(0)

Erlang:使用gen_tcp避免竞争条件:controlling_process

我正在使用以下顺序实现简单的tcp服务器:

{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) 
Run Code Online (Sandbox Code Playgroud)

使用选项{active,true}可能会导致竞争条件,即在调用"controlling_process"之前新数据包到达套接字进程,这将导致{tcp,Socket,Data}消息到达父进程而不是儿童.

如何避免这种情况?

erlang

9
推荐指数
1
解决办法
1159
查看次数

标签 统计

erlang ×1