paulo1205
(usa Ubuntu)
Enviado em 28/02/2014 - 07:15h
itzmejp escreveu:
Estou a procura de como fazer interrupções em um código C/C++, digo interrupções porque já trabalhei com microcontroladores que possuíam este recurso, ou seja, gostaria de saber o nome que se dá, e como posso fazer.
Depende um pouco do SO.
Quase todo SO com o qual eu já trabalhei tem algum tipo de timer, que pode disparar um evento (pode ser uma interrupção de baixo nível, num sistema como o DOS, ou um sinal assíncrono, como no UNIX). Você poderia usar um timer periódico para testar a condição externa que lhe interessa, e voltar ao ponto original.
A maioria dos SOs modernos lhe oferece o recurso de múltiplas threads de execução dentro do mesmo processo e mecanismos para a interação de uma com as demais. Eventualmente, você poderia ter uma thread de controle de resposta em função de condições externas.
Para o exemplo que você deu, de um jogo e a ação sobre ele por meio de um joystick, pode ser que nada disso seja necessário. O Apple II, por exemplo, era um computador que não tinha timer programável, seu joystick analógico exigia um loop para ser lido, durante o qual nada mais se podia fazer, mas mesmo assim tinha uma coleção muito variada de jogos que exigiam resposta rápida (dos que eram possíveis na sua época, é claro). Como? Com um loop iterativo de controle do jogo, que tinha como uma das etapas a leitura dos controles, e as demais incluíam o redesenho da tela e o processamento de eventos aleatórios. Era porém importante que os tempos de execução das etapas do loop fossem mais ou menos constantes, para que a resposta do jogo não se alterasse de forma perceptível em diferentes situações.