/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Pool de Threads

 
      Índice del Foro elrincondelc.com -> Programación en Servidores
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
manolin66



Registrado: 15 Jun 2009
Mensajes: 2

MensajePublicado: 15/06/2009 9:38 am
Título: Pool de Threads

Buenos días! Estoy haciendo un proyecto cliente-servidor que realiza una shell remota en Linux. Uno de los requisitos es realizar un pool de 4 hilos. Esto es, debo atender a 4 clientes (4 hilos) y los demás se quedaran esperando hasta que quede algun hilo libre. Más o menos me defiendo con los hilos pero implementandolos en una aplicación cliente-servidor con sincronización me pierdo un poco. La historia es más o menos así:

El main:

1) En el main creo los 4 hilos y lo hago el accept
2) si todos los hilos están ocupados se bloquea a la espera de uno libre, pero, debo seguir atendiendo las conexiones de otros clientes aunque estos no hagan nada hasta que quede algún hilo libre?
3) Si hay algun hilo libre lo activa, pero, cómo???

Hilos:

1) Permanece bloqueado hasta que llega un cliente
2) se atienden los comandos del cliente hasta que inserta el comando Bye,
3) después del Bye, se queda libre y dispuesto para atender a otro cliente.

No termino de ver clara la implementación, así que si alguien ha hecho algo parecido, o conoce algún ejemplo de un programa parecido en el que pueda fijarme para entenderlo le agradeceria que me echara un cable.

Un saludo
Volver arriba
eagleoneraptor



Registrado: 20 May 2008
Mensajes: 187
Ubicación: Buenos Aires(Argentina)

MensajePublicado: 22/06/2009 4:39 pm
Título:

Lo que tenes que tener en cuenta primero es el de aceptar N+1 conexiones, N es la cantidad de conexiones que usaran el shell y el restante lo que tendria que hacer es devolver una notificación de que el servidor esta ocupado y cerrar la conexión inmediatamente.

Los pasos, a groso modo serían así:
1) Aceptar una conexión con socket de escucha.
2) Conexión establecida, buscar si hay un hilo libre (lo puedes verificar usando una variable compartida que indique si el hilo esta corriendo o no, o no se si los hilos que usas proporcionan algun mecanismo), tenes 2 posibilidades:
    · Hay un hilo libre, se pasa la conexión como parametro al hilo (o lo que fuera que necesites pasar)

    · No hay un hilo libre, se devuelve la notificación (en el mismo hilo, no en otro) de "Servidor lleno" y se cierra la conexión.

3) Aceptar nueva conexión.

Con este mecanismo siempre tendras una conexión libre para la notificación de servidor agotado.

En el hilo, cuando recibas 'bye' deberas indicar de alguna forma al programa principal que ese hilo esta libre y cerrar la conexión.


Es lo que a mi se me ocurre, prueba si te va bien.
Un Saludo!
_________________
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson
Volver arriba
      Índice del Foro elrincondelc.com -> Programación en Servidores
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com