вызывается в отдельной теме
ал о шаблоне пула потоков, и я не могу найти обычное решение для следующей проблемы.
Я иногда хочу, чтобы задачи выполнялись последовательно. Например, я читаю куски текста из файла и по какой-то причине мне нужно обрабатывать куски в таком порядке. Так что в основном я хочу устранить параллелизмдля некоторых задач.
Рассмотрим этот сценарий, где задачи с*
должны быть обработаны в том порядке, в котором они были вставлены. Другие задачи могут быть обработаны в любом порядке.
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
например.
Еще одна вещь, на которую стоит обратить внимание, - это то, что у меня нет доступа ко всем задачам в группе заранее (и я не могу дождаться, пока все они придут, прежде чем начинать группу).
Спасибо за уделенное время.