Efficiently accepting TCP connections

Corrado Santoro <>
Thu May 12 22:20:07 CEST 2005


Sean Hinde wrote:
>  From a quick look at one paper on this subject it appears to be an 
> attempt to solve the problem where there are more connections than the 
> language will allow you to have threads.
On one hand. But on the other hand, the main contribution of the 
leader-follower is to overcome the overhead introduced by creating 
threads "on-the-fly" for each incoming connection.

> Erlang suffers from the opposite effect - it can have many more threads 
> than the OS will support IO handles !
OK. So you could create, say 1000 or 10000, sleeping Erlang processes, 
placing them in a pool, and then pick one process at time for each new 
connection, passing the connected socket. This avoids latency in 
connection handling because you don't need to create the process 
on-the-fly. Then, when processing of the connection is completed, the 
process can be returned to the pool and made available for a new connection.


> I suggest you scrap such thinking (be it object oriented or "thread 
> pools") and go with the Erlang way (one process for every concurrent 
> activity).
If you have an adequate number of processes in the pool, the behaviour 
of the overall system is the same as having one process for every 
concurrent activity. I think.

Object orientation is not necessary, it is only a matter of C++/Java 
implementation of the leader-follower pattern. But its principle holds 
also in a non OO environment.

Ciao,
--Corrado

-- 
======================================================
Eng. Corrado Santoro, Ph.D.

University of Catania - Engineering Faculty
Department of Computer Science and
Telecommunications Engineering
Viale A. Doria, 6 - 95125 CATANIA (ITALY)

Tel: +39 095 7382144 Int. (5) 8035
      +39 095 7382380
      +39 095 7382365
      +39 095 7382364

VoIP: sip:

Fax: +39 095 7382397

EMail: 
Personal Home Page:
             http://www.diit.unict.it/users/csanto

NUXI Home Page:
             http://nuxi.iit.unict.it
======================================================




More information about the erlang-questions mailing list