У меня есть случай, когда многие потоки одновременно генерируют данные, которые в конечном счете записываются в один длинный, серийный файл . Мне нужно как-то сериализовать эти записи так, чтобы поток был написан в правильном порядке.Стандартный термин для буфера перезаписи ввода-вывода потока?
т.е., у меня есть входная очередь 2048 заданий J ..j п, каждый из которых производит порцию данных о я. Работы выполняются параллельно, скажем, из восьми потоков, но выходные блоки должны появляться в потоке в том же порядке, что и соответствующие входные блоки —, выходной файл должен быть в порядке o o ...
решения этой проблемы довольно самоочевидный: мне нужно какое-то буфер, который накапливает и записывает выходные блоков в правильном порядке, похожий на буфер CPU переупорядочивания в Tomasulo's algorithm, или к тому, что TCP повторно собирает пакеты не по порядку, прежде чем передавать их на прикладной уровень.
Прежде чем я переведу код, я хотел бы сделать быстрый поиск литературы, чтобы увидеть, есть ли какие-либо документы, которые решили эту проблему особенно умным или эффективным способом, так как у меня серьезные ограничения в реальном времени и памяти. Кажется, я не могу найти статей, описывающих это; поиск в Scholar по каждой перестановке [потоков, параллельного, переупорядоченного буфера, повторной сборки, io, serialize] не принес ничего полезного. Я чувствую, что я просто не должен искать правильные условия.
Есть ли общее академическое имя или ключевое слово для такого типа шаблона, который я могу выполнить?
Поистине серийный - шифр потока. – Crashworks
Ваше решение работает только в том случае, если длина выходных записей известна до завершения обработки. –