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.

Reloj analógico en java

Hace tiempo programé un pequeño reloj en java con sus 3 agujas y todo. Os lo dejo aquí por si tenéis curiosidad.
La entrada es originalmente de lpp antiguo blog donde publicaba mis chorradas.

Los que quieran descargarse el código-> aquí
Los que tengan dudas que comenten.
Quien sepa algo de java le animo a que mire el código y vea lo fácil que meter otra aguja para por ejemplo los meses.