0

我有一个结构化存储格式的文件。我想知道线程是否可以同时访问这种格式。

意思是让多个线程一次读取不同的流处理它。目标是更快地加载文件。

当我提到一个文件时,我指的是一个代表 CAD 信息的文件。

4

2 回答 2

0

线程的问题总是归结为共享资源。定义将共享哪些资源,然后确定它们是否可以以这样一种方式共享,即大块处理可以并行发生。

如果您要从文件开头的目录构建许多小的独立数据结构,它可以从线程中受益。每个线程将独立于其他线程知道要读取文件的哪个部分以及如何处理它读取的数据,而无需与其他线程交互。

如果您正在构建大树或相关数据结构的层次结构,或者如果下一位数据的位置取决于前一位数据,那么可能会有多个线程相互等待。您仍然可以从一个线程中受益,该线程读取数据块并将其排队以供另一个线程处理。

您很可能会在上述示例之间取得一些平衡。您可能有一个文件读取器线程和一个小型处理线程池。处理线程可能会将结果排队等待单个组装线程,以组织成任何层次结构或关系。

如果您有线程相互等待,那么您不需要线程。如果你有独立的数据块可以原子地添加到队列中进行处理,那么线程就会大放异彩。

根据外部性,线程可能会以微妙的方式相互干扰。例如,多个读取线程可能会导致硬盘驱动器的寻道时间增加,从而导致净性能损失。

于 2010-05-17T04:31:07.353 回答
0

简单的答案是肯定的。

更长的答案是结构化存储是 COM 的一部分,COM 线程模型(有时称为单元模型)与 Win32 线程模型不同,并且有自己的规则和 API 用于跨单元编组数据。

在你开始之前,问问自己你的存储机制是否真的必须是结构化存储......IMO除了一个伤害的世界(线程明智)之外,它并没有给你太多超过标准的IO

实际的结构化部分非常基础,任何 XML 文件都更加结构化。

于 2010-05-17T04:33:43.073 回答