#07 - Interface de sincronização de Threads Posix: Variáveis de Condição (cont.)
Objectivos
Implementação de uma biblioteca de controlo de concorrência com exclusão mútua entre leitores e escritores: caso clássico de prioridade aos leitores; discussão de outros cenários.
Exercícios propostos
- Implemente uma biblioteca de controlo de concorrência que exclua
mutuamente leitores e escritores no acesso a recursos partilhados.
Considere o cenário clássico em que se favorece os leitores,
dando-lhes prioridade no acesso a esses recursos. Para o efeito,
considere os protótipos das operações a suportar:
int lock_init(lock_t *lock); int lock_acquire(lock_t *lock, operation_t oper); int lock_release(lock_t *lock, operation_t oper); int lock_destroy(lock_t *lock);
- Reimplemente a biblioteca proposta no primeiro exercício, considerando agora que se pretende dar prioridade aos escritores relativamente aos leitores.
- Implemente uma nova biblioteca que, especificamente, ofereça controlo
de concorrência no acesso a ficheiros. Para o efeito, faça uso da
biblioteca genérica implementada no exercício anterior. Considere os
protótipos das operações a suportar:
int file_open(const char *file, int flags, mode_t mode); int file_close(int fd); int file_lib_initialize(); int file_lib_cleapup();