2010-05-17 106 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