Estou escrevendo um aplicativo em tempo real suave em c #. Certas tarefas, como responder a solicitações de hardware provenientes de uma rede, precisam ser concluídas dentro de uma certa quantidade de milissegundos; no entanto, não é 100% de missão crítica fazer isso (ou seja, podemos tolerar que seja pontual na maior parte do tempo, e o 1% é indesejável, mas não uma falha), daí a parte "flexível".
Agora percebo que o C # é uma linguagem gerenciada, e as linguagens gerenciadas não são particularmente adequadas para aplicativos em tempo real. No entanto, a velocidade na qual podemos realizar as tarefas em C #, bem como os recursos da linguagem, como gerenciamento de reflexão e memória, facilitam muito a tarefa de criar esse aplicativo.
Existem otimizações ou estratégias de design que podemos adotar para reduzir a quantidade de sobrecarga e aumentar o determinismo? Idealmente, eu teria os seguintes objetivos
- Atrasar a coleta de lixo até que ela seja "segura"
- Permitir que o coletor de lixo funcione sem interferir nos processos em tempo real
- Prioridades de thread / processo para diferentes tarefas
Existem maneiras de fazer isso em C # e outras coisas a serem observadas em tempo real ao usar o C #?
O destino da plataforma para o aplicativo é o .NET 4.0 Client Profile no Windows 7 de 64 bits, com. Eu o configurei atualmente para o perfil do cliente, mas essa era apenas a opção padrão e não foi escolhida por nenhum motivo específico.