[C con Clase] VIDA O MUERTE

Juan Pablo Freeckman elpibe_ en hotmail.com
Sab Feb 17 19:28:20 CET 2007


Hola gente. Mi problema es el siguiente, presente hoy una practica qe me 
llevo 3 meses y me quieren suspender por no poner una instruccion en u 
programa de 2500 lineas. El trozo d ecodigo vieen a ser como viene a 
continuacion.

LPVOID Workerthread       //hilo
{
     clientesactivos++;   //incremento la variable dentro del hilo.
     .
     .
     .
     funcionprincipal();
     .
     .
     .
    clientesactivos--;     //la decremento cuando la funcionprincipal 
acaba,es decir ,cuando l                                //el cliente se 
desconecta
    return 0;
}

main
{
   .
   .
   .
   clientesactivos = 0;
   while(clientesactivos <= 4)
    {   .
        .
         .
        accept(socket........);    //acepto la coenxion de un cliente
        .
        .
        .
         CreateThread(....,..,..,WorkerThread,..)    //Entro en el hilo
         while(clienteactivos >=4)
              {sleep(10000);}
     }

}

Este codigo pertenece a un servidor. y permito la entrada a 5 clientes como 
maximo.necesito tener constancia de cuantos clientes hay conectados con la 
variable global cilentesactivos.El sexto cliente no debe conectarse y si se 
descoencta alguno de los 5, debe poderse admitir a otro cliente
El tema es que permito la entrada a funcionprincipal() a clientes que he 
permitido el acceso al hilo. Clientesactivos es un variable que se incremeta 
y decrementa dentro del hilo, y conozco su valor en "tiempo real" en el 
main. Si tengo 5 clientes conectados, el main queda en el bucle que ejecuta 
la funcion sleep, y sale de el cuando es inferior a  4(cuando se desconecta 
algun cliente). Mi profesor no entiende bien el codigo. Dice q tenia q haber 
introducido esaa variable en una seccion critica por que su valor se ve 
afectado entre hilos, pero yo creo q no importa eso. me quiere catear por 
esa pijada a pesar de que funciona bien, y encima no creo q este en lo 
cierto.  No creo q exista alguna situacion q  se me puedan conectar mas o 
menos clientes, que opinais?steven?

_________________________________________________________________
Horóscopo, tarot, numerología... Escucha lo que te dicen los astros. 
http://astrocentro.msn.es/





Más información sobre la lista de distribución Cconclase