作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个案例,其中许多线程都同时生成数据,这些数据最终写入一个长的串行 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/
我是一名优秀的程序员,十分优秀!