volatile int s; /* Variável compartilhada */
/* Código para a Thread i */
void* f_thread(void* v) {
int thr_id = (int *) *v;
while (1) {
/* Região não crítica */
/* Protocolo de entrada */
/* Região crítica */
s = thr_id;
printf ("Thr %d: %d", thr_id, s);
/* Protocolo de saída */
}
}
Considere que cada thread tem uma prioridade, que pode ser definida
estatica ou dinamicamente. Proponha um algoritmo que garanta que
threads mais prioritárias terão preferência para entrada na região
crítica. É claro que se uma thread já estiver utilizando a região
crítica, ela não deve ser interrompida.
O seu algoritmo deve ser implementado de maneira semelhante aos códigos apresentados em sala de aula. No cabeçalho do código-fonte devem ser colocados os nomes dos integrantes do grupo e uma explicação do funcionamento do algoritmo. Cada grupo deverá fazer uma breve apresentação da sua solução (de preferência com slides), que será agendada após a entrega do código. Neste dia, o grupo deverá rodar o código com cenários (com prioridades diferenciadas e sleeps) e argumentar a razão pela qual o código funciona. Será imprescindível a participaçõa de todos os componentes do grupo.
A nota final deste laboratório será composta por
[MC514-1s08] Entrega Threads01 - RAXXXXXX, RAXXXXXX e RAXXXXXX.