Actualmente, tengo una gran cantidad de cálculos de C# (llamadas a métodos) que residen en una cola que se ejecutará secuencialmente. Cada cálculo utilizará un servicio de alta latencia (red, disco ...).Patrón de diseño alternativo a Coroutines
Iba a utilizar Mono coroutines para permitir que el próximo cálculo en la cola de cómputo continúe mientras un cómputo anterior está esperando que regrese el servicio de latencia alta. Sin embargo, prefiero no depender de Mono coroutines.
¿Hay algún patrón de diseño implementable en C# puro que me permita procesar cálculos adicionales mientras espero que vuelvan los servicios de alta latencia?
Gracias
Actualización:
necesito para ejecutar un gran número (> 10.000) de las tareas, y cada tarea va a utilizar algún servicio de alta latencia. En Windows, no puede crear tantos subprocesos.
Actualización:
Básicamente, necesito un patrón de diseño que emula las ventajas (a continuación) de tasklets en Stackless Python (http://www.stackless.com/)
- enorme # de tareas
- Si una la tarea bloquea la siguiente tarea en la cola se ejecuta
- Sin pérdida de ciclo de la CPU
- Conmutación mínima de la tara entre las tareas
¿Puede hacer un caso más fuerte para corutinas como una solución aquí? Parece pedir el enhebrado (balanceado), como en la respuesta de dtb. –
Bueno, necesito ejecutar un gran número (> 10000) de tareas, y cada tarea usará un servicio de alta latencia. En Windows, no puede crear tantos subprocesos. – jameszhao00
Suena como un trabajo para ThreadPool, +1 para jscharf –