【发布时间】:2010-05-28 21:46:04
【问题描述】:
我有一个案例,其中许多线程都同时生成数据,这些数据最终写入一个长的串行 file 流。我需要以某种方式序列化这些写入,以便以正确的顺序写入流。
ie,我有一个 2048 个作业的输入队列 j0..jn,每个作业都会产生一大块数据 o 我。作业在 8 个线程上并行运行,但输出块必须以与相应输入块相同的顺序出现在流中 - 输出文件的顺序必须为 o0 o1o2...
这个问题的解决方案是不言而喻的:我需要某种缓冲区以正确的顺序累积和写入输出块,类似于Tomasulo's algorithm 中的 CPU 重新排序缓冲区,或者类似于 TCP 重组输出的方式 -在将它们传递到应用程序层之前的无序数据包。
在开始编写代码之前,我想快速搜索一下文献,看看是否有任何论文以特别聪明或有效的方式解决了这个问题,因为我有严重的实时和内存限制。不过,我似乎找不到任何描述这一点的论文;对 [threads, concurrent, reorder buffer, reassembly, io, serialize] 的每个排列进行学术搜索并没有产生任何有用的信息。我觉得我一定不是在搜索正确的术语。
我可以搜索这种模式的通用学术名称或关键字吗?
【问题讨论】:
标签: algorithm concurrency computer-science