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?
EDITAComo 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.