sem_t sem_escr; sem_t sem_leit; int c = 0; /* quantidade de escritores */ lock_t lock_c; cond_t wait_c; int l = 0; /* quantidade de leitores */ lock_t lock_l; cond_t wait_l; /* Leitor: */ lock(lock_c); if (c != 0) cond_wait(wait_c); unlock(lock_c); le(); /* Escritor */ inc(c); wait(sem_escr); escreve(); signal(sem_escr); lock(lock_c); c--; if (c == 0) cond_broadcast(wait_c); unlock(lock_c);