mutex m; bool estado = false; // false == hombre int gente = 0; Semaforo cola(3); persona( bool genero ) { while( true ) { Trabajar(); m.wait(); if( estado == genero || gente == 0 ) { estado = genero; m.signal(); cola.wait(); m.wait; ++gente; m.signal(); Banno(); m.wait(); --gente; m.signal(); cola.signal(); } else m.signal(); } }