Mostrando entradas con la etiqueta C. Mostrar todas las entradas
Mostrando entradas con la etiqueta C. Mostrar todas las entradas

jueves, 1 de diciembre de 2011

Problema de lectores / escritores con prioridad de escritores

  • Declaración de variables globales
semáforo lecMutex; // para modificar el numero de lectores
semáforo escMutex; // para modificar el numero de escritores
semáforo lectores; // para bloquear a los lectores cuando están los escritores
semáforo escritores; // para que solo esté un escritor en la S.C. a la vez


int nEscritores=0; // número de escritores en la S.C. 
int nLectores=0; // número de lectores en la S.C.  
  • Inicialización
init( lecMutex, 1);
init( escMutex, 1);
init( lectores, 1);
init( escritores, 1);

  • Lector

while(true){
  wait(lectores);
  wait(lecMutex);
  nLectores++;
  if(nLectores == 1)
    wait(escritores)
  signal(lecMutex)
  signal(lectores);
  // leer
  wait(lecMutex);
  nLectores--;
  if(nLectores == 0)
  signal(escritores);
  signal(lecMutex)
}

  • Escritor

while(true){   

  wait(escMutex);
  nEscritores++;
  if(nEscritores == 1)
    wait(lectores)
  signal(escMutex)
  wait(escritores);
  // escribir
  signal(escritores);
  wait(escMutex);
  nEscritores--;
  if(nEscritores == 0)
    signal(lectores);
  signal(escMutex);
}



Nota: Las variables nLectores y nEscritores son globales ya que si fueran locales al empezar un hilo se inicializan a 0 una y otra vez.

Ruleta de la suerte en C

Otra de mis entradas del antiguo blog los programadores pelirrojos.

Bueno pues aquí tenéis un juego cutre en C que hice usando la librería de conio hace ya algún tiempo.
El juego consiste en hacer que los tres dibujos de las tres columnas que van pasando rápidamente coincidan, como en las maquinas tragaperras.
Cuado os lo descarguéis encontrareis el ejecutable, el código fuente (sin comentar ya que se entiende mas o menos bien) y las librerías necesarias para compilar el código fuente del juego.


AVISO PARA LUDOPATAS: no jueguen a esto que si no se envician y aquí no se gastan las perras.