TPL questão arquitetônica

Atualmente, estou trabalhando em um projeto, no qual temos o desafio de processar itens em paralelo. Até agora não é grande coisa;) Agora, para o problema. Temos uma lista de IDs, onde periodicamente (a cada 2 s) o que chamar de StoredProcedure para cada ID. Os 2 segundos precisam ser verificados para cada item individualmente, à medida que são adicionados e removidos durante o tempo de execução. Além disso, queremos configurar o grau máximo de paralelismo, pois o banco de dados não deve ser inundado com 300 threads simultaneamente. Um item que está sendo processado não deve ser reagendado para processamento até terminar com a execução anterior. O motivo é que queremos evitar a fila de muitos itens, em caso de atrasos no banco de dado

gora, estamos usando um componente autodesenvolvido, que possui um encadeamento principal, que verifica periodicamente quais itens precisam ser agendados para processamento. Uma vez que tenha a lista, ele será descartado em um pool de encadeamentos baseado em IOCP personalizado e, em seguida, usará waithandles para aguardar os itens serem processados. Em seguida, a próxima iteração é iniciada. IOCP por causa do roubo de trabalho que fornec

Gostaria de substituir esta implementação personalizada por uma versão TPL / .NET 4 e gostaria de saber como você a resolveria (idealmente simples e bem legível / fácil de manter). Eu sei sobre este artigo:http: //msdn.microsoft.com/en-us/library/ee789351.asp, mas está limitando a quantidade de threads sendo usados. Deixa o trabalho roubando, executando periodicamente os itens ....

Ideally se tornará um componente genérico, que pode ser usado para algumas tarefas que precisam ser realizadas periodicamente para uma lista de iten

qualquer entrada bem-vinda, tia Martin

questionAnswers(2)

yourAnswerToTheQuestion