Asegurando el orden de ejecución de la tarea en threadpool

He estado leyendo sobre el patrón de grupo de subprocesos y parece que no puedo encontrar la solución habitual para el siguiente problema.

A veces quiero que las tareas se ejecuten en serie. Por ejemplo, leo fragmentos de texto de un archivo y, por alguna razón, necesito que los fragmentos se procesen en ese orden. Así que básicamente quiero eliminar la concurrencia para algunas de las tareas.

onsidere este escenario donde las tareas con* deben procesarse en el orden en que se introdujeron. Las otras tareas se pueden procesar en cualquier orden.

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

En el contexto de un grupo de subprocesos, sin esta restricción, una sola cola de tareas pendientes funciona bien, pero claramente aquí no lo hace.

Pensé en tener algunos de los hilos operar en una cola específica de subprocesos y los demás en la cola "global". Luego, para ejecutar algunas de las tareas en serie, simplemente tengo que empujarlas a una cola donde se ve un solo hilo. Esohac suena un poco torpe.

Entonces, la verdadera pregunta en esta larga historia: ¿cómo resolverías esto? @ ¿Cómo se aseguraría de que esas tareas estén ordenadas?

EDITA

omo un problema más general, supongamos que el escenario anterior se convierte en

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

Lo que quiero decir es que las tareas dentro de un grupo deben ejecutarse secuencialmente, pero los grupos mismos pueden mezclarse. Entonces puedes tener3-2-5-4-7 por ejemplo

Otra cosa a tener en cuenta es que no tengo acceso a todas las tareas en un grupo por adelantado (y no puedo esperar a que lleguen todas antes de comenzar el grupo).

Gracias por tu tiempo

Respuestas a la pregunta(17)

Su respuesta a la pregunta