[erlang-questions] How to solve the blocking accept call in atcp_listener process ?
Fri Jun 5 23:42:35 CEST 2009
No, but you'll have to live with that.
> ok, but it's not gen_server compatible !
> James Hague wrote:
> > Many examples uses the async_accept primitive from the module prim_inet.
> > This primitive is not documented (low level) and might change or dissapear.
> > Do you know examples which don't use it but use a "clean" solution for the blocking accept call ?
> > > Or could you show an elegant solution in this forum ?
> > You could always put the blocking call into it's own process. When a
> > connection occurs, change the port's owner and send the port in a
> > message. (And open the port in passive mode to make sure messages
> > aren't received before switching the owner.)
> The way I've always done it is to spawn the acceptor as:
> L = listen(...),
> listen_loop(L) - >
> Top = self(),
> spawn(fun() - >
> Sock = accept(L),
> Top ! one_more,
> one_more - >
> erlang-questions mailing list
More information about the erlang-questions