tempo real
A segunda aula do projeto Técnicas de Controle em Tempo Real teve como objetivo desenvolver um programa com três threads utilizando os recursos do RTAI:
• a thread 1 cria outras duas threads e fica em um loop esperando dados do teclado e, quando apertada a tecla enter, coloca os dados em um buffer (se a palavra “exit” for digitada, a thread sai do loop);
• a thread 2 escreve na tela a mensagem “Sou a thread que escreve na tela!” a cada 5 segundos;
• a thread 3 escreve na tela os dados armazenados no buffer.
A thread 2 foi a mais simples de ser implementada: apenas imprime a mensagem na tela e, utilizando a função sleep(), espera 5 segundos.
Já para as threads 1 e 3, foi necessário criar um mecanismo de sincronismo e exclusão mútua. Isto é necessário porque estas threads utilizam um recurso compartilhado (buffer), podendo causar efeitos indesejáveis se forem executadas de forma intercalada. Para garantir a exclusão mútua foram usados semáforos.
Para implementar o sincronismo entre as threads 1 e 3 foram utilizados 2 semáforos, um sinaliza que o buffer está livre para inserção de um novo dado e o outro informa que há dado para ser retirado do buffer. Assim, a thread 1 aguarda pela sinalização de que o buffer está vazio, insere o dado e sinaliza que há informação para ser lida. Já a thread 2, aguarda pela sinalização de que há dado para ser lido, retira o dado e sinaliza que o buffer está vazio.