TPL pregunta arquitectónica

Actualmente estoy trabajando en un proyecto, donde tenemos el desafío de procesar elementos en paralelo. Hasta ahora no es un gran problema;) Ahora al problema. Tenemos una lista de ID, donde periódicamente (cada 2 segundos) qué llamar un procedimiento almacenado para cada ID. Los 2 segundos deben verificarse para cada elemento individualmente, ya que se agregan y eliminan durante el tiempo de ejecución. Además, queremos configurar el grado máximo de paralelismo, ya que la base de datos no debe inundarse con 300 subprocesos al mismo tiempo. Un elemento que se está procesando no debe reprogramarse para su procesamiento hasta que haya finalizado con la ejecución anterior. La razón es que queremos evitar poner en cola muchos elementos, en caso de retrasos en la base de datos.

Ahora mismo estamos usando un componente de desarrollo propio, que tiene un hilo principal, que verifica periódicamente qué elementos deben programarse para su procesamiento. Una vez que tiene la lista, los elimina en un grupo de subprocesos personalizado basado en IOCP, y luego usa los controles de espera para esperar a que se procesen los elementos. Entonces comienza la siguiente iteración. IOCP debido al robo de trabajo que proporciona.

Me gustaría reemplazar esta implementación personalizada con una versión TPL / .NET 4, y me gustaría saber cómo la resolverías (idealmente simple y agradablemente legible / mantenible). Sé sobre este artículo:http: //msdn.microsoft.com/en-us/library/ee789351.asp, pero solo está limitando la cantidad de hilos que se utilizan. Deja el trabajo robando, ejecutando periódicamente los artículos ...

e hecho, se convertirá en un componente genérico, que se puede utilizar para algunas de las tareas que deben realizarse periódicamente para obtener una lista de elementos.

cualquier entrada bienvenida, tia Martin

Respuestas a la pregunta(2)

Su respuesta a la pregunta