🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #17859

Re: Sockets asincronos en Linux

#17859
From: oscar
Date: Wed, 20 Oct 1999 00:00
30 lines
2662 bytes
Juan Carrasco <jcarras@glup.uv.es> wrote:

>  Gracias, ya me habia planteado una opci�n parecida, pero no acaba darme
> mucha confianza, ten en cuenta que no se cuantos sockets van a haber. Lo
> bueno seria "dar de alta" el socket a alguien que se encargue de realizar el
> select, o utilizar un hilo por cada socket para escuchar. �Cual crees t� que
> puede ser la mejor opci�n, un objeto o clase al que haya que decirle que
> sockets hay o uno o m�s hilos por socket para las operaciones? Podr�a

Lo normal es que manejes todos los sockets (y descriptores) desde un solo hilo.
La funci�n de crear socket en el hilo principal, hace una llamada especial al
hilo de soporte as�ncrono. Este da de alta al descriptor en cuesti�n dentro
del select y crea una referencia a la funci�n a la que deber� llamar si
recibe datos.
El m�ximo n�mero de descriptores es de 1024, as� que un array de punteros es
de 4Kb. Tampoco es mucho hoy en d�a.
De hecho esto mismo lo puedes hacer sin hebras, usando el m�todo de examinar
cada cierto periodo de tiempo. Usando el alarm y atendiendo a la se�al cada
1 cent�sima de segundo puedes examinar si hay alguna operaci�n que realizar
en los descriptores y seguir con lo que estabas.
Sin embargo hay que reconocer que ser�a preferible que el kernel tuviese algo
para no tener que solucionarlo con un sistema tan "chapuza".
Pero funcionar, funciona. Te lo aseguro.
Eso s�. Tienes que jugar con las m�scaras de las se�ales para asegurarte que
el alarm no se parar� ante una llamada bloqueante en medio de la ejecuci�n
normal. Si hubiesen algunos tipos de llamada que pudiesen bloquear el alarm
durante demasiado tiempo, la soluci�n de hebras ser�a m�s recomendable.

En linux no puedes crear demasiadas hebras ya que estas son tratadas como 
procesos normales.
Technical Details
Message-ID: <7uktkh$34m$1@titan.bt.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <7uk83t$8v7$1@peque.uv.es> <7ukbrf$k9e$1@titan.bt.es> <7ukrv6$ec8$1@peque.uv.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,d174b8549cf7b4e8
X-Google-Attributes: gidf86c8,public
From: oscar@server.enmicasa.dhs.org
Subject: Re: Sockets asincronos en Linux
Date: 1999/10/20
Message-ID: <7uktkh$34m$1@titan.bt.es>
X-Deja-AN: 538494039
Distribution: es
Content-Transfer-Encoding: 8bit
References: <7uk83t$8v7$1@peque.uv.es> <7ukbrf$k9e$1@titan.bt.es> <7ukrv6$ec8$1@peque.uv.es>
Content-Type: text/plain; charset=ISO-8859-1
X-Complaints-To: abuse@bt.es
X-Trace: titan.bt.es 940440017 3222 212.22.49.143 (20 Oct 1999 17:20:17 GMT)
Organization: BT Tel. Netnews service (readers)
Mime-Version: 1.0
User-Agent: tin/pre-1.4-980226 (UNIX) (Linux/2.2.12 (i686))
NNTP-Posting-Date: 20 Oct 1999 17:20:17 GMT
Newsgroups: es.comp.os.linux.programacion