2010-05-17 158 views
0

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

含义有多个线程读取不同的数据流一次处理它。目标是更快地加载文件。

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

+0

在不知道文件格式的细节的情况下回答这个问题是不可能的。例如,数据中是否存在任何隐含的排序,比如要求如果对象'A'包含对象'B',那么必须先创建'A'? – 2010-05-17 04:09:03

回答

0

线程的问题总归归结为共享资源。定义将要共享的资源,然后确定它们是否可以以可以并行处理大块处理的方式进行共享。

如果您正在从文件开头的内容列表构建大量小型独立数据结构,它可以从线程中受益。每个线程都会独立于其他线程知道要读取的文件的哪部分以及如何处理读取的数据,而不与其他线程交互。

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

上面的例子很可能会有一些平衡。您可能有一个文件读取器线程和一小部分处理线程。处理线程可能会将单个组合线程的结果排队,以便组织到任何层次或关系中。

如果你有线程等待对方,那么你不需要一个线程。如果你有独立的数据块可以原子地添加到队列进行处理,那么线程就会发光。

根据外部性,线程可以以微妙的方式相互干扰。例如,多个读取线程可能会导致硬盘更多的查找时间,从而导致网络性能损失。

0

简单的答案是肯定的。

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

你踏上这之前,问自己,如果你的存储机制真的要被结构化存储... IMO它不会给你太多了标准IO除了受伤的世界(线程明智)

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

+0

纯XML存储的缺点是存储二进制数据;不得不Base64编码数据真的炸毁文件(4/3rds) – 2016-05-02 18:09:46