Sto scrivendo un'applicazione soft in tempo reale in C #. Alcune attività, come rispondere alle richieste hardware provenienti da una rete, devono essere terminate entro una certa quantità di millisecondi; tuttavia non è mission-critical al 100% farlo (cioè possiamo tollerare che sia puntuale per la maggior parte del tempo, e l'1% è indesiderabile ma non un fallimento), quindi la parte "soft".
Ora mi rendo conto che C # è un linguaggio gestito e le lingue gestite non sono particolarmente adatte per le applicazioni in tempo reale. Tuttavia, la velocità con cui possiamo fare le cose in C #, così come le funzionalità linguistiche, come la riflessione e la gestione della memoria, rendono il compito di creare questa applicazione molto più facilmente.
Esistono ottimizzazioni o strategie di progettazione che è possibile adottare per ridurre la quantità di costi generali e aumentare il determinismo? Idealmente avrei i seguenti obiettivi
- Ritarda la garbage collection finché non è "sicura"
- Permetti al garbage collector di funzionare senza interferire con i processi in tempo reale
- Discussione / elaborazione delle priorità per diversi compiti
Ci sono dei modi per farlo in C # e ci sono altre cose da tenere in considerazione in tempo reale quando si usa C #?
L'obiettivo della piattaforma per l'applicazione è .NET 4.0 Client Profile su Windows 7 64-bit, con. L'ho impostato al momento sul profilo del cliente ma questa era solo l'opzione predefinita e non è stata scelta per nessun motivo particolare.