Estoy escribiendo una aplicación suave en tiempo real en C #. Ciertas tareas, como responder a las solicitudes de hardware provenientes de una red, deben completarse en una cierta cantidad de milisegundos; sin embargo, no es 100% crítico hacerlo (es decir, podemos tolerar que llegue a tiempo la mayor parte del tiempo, y el 1% es indeseable pero no un fracaso), de ahí la parte "blanda".
Ahora me doy cuenta de que C # es un lenguaje administrado, y los lenguajes administrados no son particularmente adecuados para aplicaciones en tiempo real. Sin embargo, la velocidad con la que podemos hacer las cosas en C #, así como las características del lenguaje, como la reflexión y la administración de memoria, hacen que la tarea de construir esta aplicación sea mucho más fácil.
¿Hay optimizaciones o estrategias de diseño que uno pueda tomar para reducir la cantidad de gastos generales y aumentar el determinismo? Idealmente tendría los siguientes objetivos
- Retrasar la recolección de basura hasta que sea "seguro"
- Permita que el recolector de basura funcione sin interferir con los procesos en tiempo real
- Hilo / prioridades de proceso para diferentes tareas
¿Hay alguna forma de hacer esto en C #, y hay otras cosas a tener en cuenta con respecto al tiempo real cuando se usa C #?
El objetivo de la plataforma para la aplicación es .NET 4.0 Client Profile en Windows 7 de 64 bits, con. Lo configuré actualmente en Perfil del cliente, pero esta era solo la opción predeterminada y no se eligió por ningún motivo en particular.