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.