[erlang-questions] gen_tcp send blocks gen_tcp recv.

Satyam Shekhar satyamshekhar@REDACTED
Mon Sep 3 06:47:23 CEST 2012


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120903/fecdad13/attachment.htm>


More information about the erlang-questions mailing list