У меня есть случай, когда все потоки одновременно генерируют данные, которые в конечном итоге записываются в один длинный последовательный поток файл . Мне нужно как-то сериализовать эти записи, чтобы поток записывался в правильном порядке.
то есть , у меня есть очередь ввода 2048 заданий j 0 .. j n , каждое из которых создает кусок данных o я . Задания выполняются параллельно, скажем, на восьми потоках, но выходные блоки должны появляться в потоке в том же порядке, что и соответствующие входные блоки & mdash; выходной файл должен быть в следующем порядке: o 0 o 1 o 2 ...
Решение этого вполне очевидно: мне нужен какой-то буфер, который накапливает и записывает выходные блоки в правильном порядке, аналогично буферу переупорядочения ЦП в Алгоритм Томасуло , или как что TCP собирает неупорядоченные пакеты перед передачей их на уровень приложений.
Прежде чем приступить к написанию кода, я хотел бы сделать быстрый поиск литературы, чтобы увидеть, есть ли какие-либо документы, которые решают эту проблему особенно умным или эффективным способом, поскольку у меня есть серьезные ограничения в реальном времени и памяти. Я не могу найти какие-либо документы, описывающие это, хотя; Поиск по всем перестановкам [потоков, одновременных, буфер переупорядочения, повторной сборки, ввода-вывода, сериализации] не дал ничего полезного. Мне кажется, что я просто не ищу правильные термины.
Существует ли общее академическое имя или ключевое слово для такого типа шаблона, по которому я могу искать?