Garantir a ordem de execução da tarefa no pool de threads

Estive lendo sobre o padrão de pool de threads e não consigo encontrar a solução usual para o seguinte problem

Às vezes, quero que as tarefas sejam executadas em série. Por exemplo, leio pedaços de texto de um arquivo e, por algum motivo, preciso que os pedaços sejam processados nessa ordem. Então, basicamente, eu quero eliminar a simultaneidadepara algumas das tarefas.

Considere este cenário em que as tarefas com* precisam ser processados na ordem em que foram enviados. As outras tarefas podem ser processadas em qualquer orde

push task1
push task2
push task3   *
push task4   *
push task5
push task6   *
....
and so on

No contexto de um pool de threads, sem essa restrição, uma única fila de tarefas pendentes funciona bem, mas claramente aqui nã

Eu pensei em ter alguns dos tópicos operam em uma fila específica do encadeamento e os outros na fila "global". Então, para executar algumas das tarefas em série, eu simplesmente preciso colocá-las em uma fila em que um único encadeamento seja exibido. Istofaarece um pouco desajeitad

Então, a verdadeira questão nesta longa história: como você resolveria isso?Como você garantiria que essas tarefas sejam ordenadas?

EDITA

Como um problema mais geral, suponha que o cenário acima se torne

push task1
push task2   **
push task3   *
push task4   *
push task5
push task6   *
push task7   **
push task8   *
push task9
....
and so on

O que quero dizer é que as tarefas dentro de um grupo devem ser executadas seqüencialmente, mas os próprios grupos podem se misturar. Então você pode ter3-2-5-4-7 por exemplo

utra coisa a observar é que não tenho acesso a todas as tarefas de um grupo antecipadamente (e mal posso esperar para que todas cheguem antes de iniciar o grupo

Obrigado pelo seu tempo.

questionAnswers(17)

yourAnswerToTheQuestion