вызывается в отдельной теме

ал о шаблоне пула потоков, и я не могу найти обычное решение для следующей проблемы.

Я иногда хочу, чтобы задачи выполнялись последовательно. Например, я читаю куски текста из файла и по какой-то причине мне нужно обрабатывать куски в таком порядке. Так что в основном я хочу устранить параллелизмдля некоторых задач.

Рассмотрим этот сценарий, где задачи с* должны быть обработаны в том порядке, в котором они были вставлены. Другие задачи могут быть обработаны в любом порядке.

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

В контексте пула потоков, без этого ограничения, одиночная очередь ожидающих задач работает нормально, но здесь явно нет.

Я думал о том, чтобы иметьнекоторые темы работать в определенной для потока очереди, а остальные в «глобальной» очереди. Затем, чтобы последовательно выполнить некоторые задачи, мне просто нужно поместить их в очередь, в которую смотрит один поток. Этоделает звучит немного неуклюже.

Итак, настоящий вопрос в этой длинной истории: как бы вы решили это?Как бы вы обеспечили заказ этих задач??

РЕДАКТИРОВАТЬ

В качестве более общей проблемы предположим, что приведенный выше сценарий становится

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

Я имею в виду, что задачи внутри группы должны выполняться последовательно, но сами группы могут смешиваться. Таким образом, вы можете иметь3-2-5-4-7 например.

Еще одна вещь, на которую стоит обратить внимание, - это то, что у меня нет доступа ко всем задачам в группе заранее (и я не могу дождаться, пока все они придут, прежде чем начинать группу).

Спасибо за уделенное время.

Ответы на вопрос(1)

Ваш ответ на вопрос