algorithm - 线程 I/O 重新排序缓冲区的标准术语?

标签 algorithm concurrency computer-science

我有一个案例,其中许多线程都同时生成数据,这些数据最终写入一个长的串行 file 流。我需要以某种方式序列化这些写入,以便以正确的顺序写入流。

ie,我有一个包含 2048 个作业 j0..jn 的输入队列,每个作业都会产生一大块数据 o <子>我。作业在八个线程上并行运行,但输出 block 必须以与相应输入 block 相同的顺序出现在流中——输出文件必须以 o0 的顺序出现o1o2...

这个问题的解决方案是不言自明的:我需要某种缓冲区来以正确的顺序累积和写入输出 block ,类似于 Tomasulo's algorithm 中的 CPU 重新排序缓冲区。 ,或者 TCP 在将无序数据包传递到应用层之前重新组合它们的方式。

在编写代码之前,我想快速搜索一下文献,看看是否有任何论文以特别聪明或有效的方式解决了这个问题,因为我有严格的实时和内存限制。不过,我似乎找不到任何描述这一点的论文;对 [threads, concurrent, reorder buffer, reassembly, io, serialize] 的每个排列的 Scholar 搜索没有产生任何有用的结果。我觉得我一定是没有搜索正确的术语。

我可以搜索这种模式的通用学术名称或关键字吗?

最佳答案

Enterprise Integration Patterns本书称其为 Resequencer (p282/web )。

关于algorithm - 线程 I/O 重新排序缓冲区的标准术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932733/

相关文章:

algorithm - 查找 k 阶斐波那契树中两个节点之间的路径

javascript - 如何在 DOM 元素中查找所有文本及其父元素

java - 对输入流和从文件中读取感到困惑

c++ - 统一哈希函数

c++ - 实现 count_permutations 的更好方法?

java - 如果我有多个线程要插入MySQL,我是否需要同步?

java - 线程互斥段

c++ - 在 Qt 中运行一个单独的进程或线程

computer-science - 计算机科学家和计算机程序员之间的区别

computer-science - 对于计算机科学家来说,最好的生物信息学书籍是什么?