Article View: es.comp.os.linux.programacion
Article #17859Re: Sockets asincronos en Linux
From: oscar
Date: Wed, 20 Oct 1999 00:00
Date: Wed, 20 Oct 1999 00:00
30 lines
2662 bytes
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-mailReferences:
<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