[erlang-questions] gen_tcp send blocks gen_tcp recv.

Arun Muralidharan <>
Mon Sep 3 17:31:19 CEST 2012

Can you be more specific on how your sending process is overloading your
receiving process(P1) by making a "blocking" call ? I didnt quite get it.
Why dont you try an async design pattern as shown in


On Mon, Sep 3, 2012 at 12:47 PM, Erik Søe Sørensen <>wrote:

> Have you considered having one process for sending and one for receiving
> (on the same socket)?
> Den 03/09/2012 06.47 skrev "Satyam Shekhar" <>:
>> Hi,
>> I know this question has been asked many times.
>> http://erlang.2086793.n4.nabble.com/Non-blocking-sends-in-gen-tcp-td2114537.html
>> https://groups.google.com/forum/?fromgroups=#!topic/erlang-programming/4DBmCK4GAK8
>> But my concern is slightly different. I have a separate sending/receiving
>> process, P1, for a gen_tcp socket which receives messages it has to send,
>> from process P2. There is no acking between the P1 and P2. Data is buffered
>> at P2 and data acking is client driven, i.e that client says how much data
>> it has received when it reconnects. Right now, P2 sends data to P1 as soon
>> as it generates any data, and also adds it to its buffer, so that it can
>> send it to the client if the socket gets closed before client receives it.
>> The issue is, since the gen_tcp send call is blocking, and P2 might flood
>> P1s mailbox at times, received messages(socket in active once mode) from
>> the client are delayed quite a bit.
>> What is the best way to handle this?
>> Regards,
>> Satyam Shekhar
>> _______________________________________________
>> erlang-questions mailing list
>> http://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120903/6f7b3b99/attachment.html>

More information about the erlang-questions mailing list