2011-11-20 25 views
1

蘋果的Documentation提到穿線的PDF的晶體核心渲染必須手動處理。是否有人實現了多核心PDF渲染或者有任何想法如何卸載渲染工作來分離線程或將文檔分成頁面塊並將其分發到單獨的核心,如文檔所示?目前我的應用程序在大約1.5秒內加載大量PDF,但多線程可能會大大減少這個時間(哈哈)。CGPDFDocument線程

回答

3

正如您注意,明確地說「分發PDF文件,以單獨的線程的單個頁面文件不被支持。如果你想使用線程,考慮爲每個線程單獨的文檔和每個頁面的塊操作線。」儘管爲了使這個指導適應GCD,你會做的是爲每個「頁面塊」創建一個串行隊列(其中塊的大小當然可以是「一頁」),然後通過提交創建和操作單個CGPDFDocumentRef塊到相應的隊列。通過讓給定的CGPDFDocumentRef的getter與一個dispatch_sync使用相同的隊列來獲取值,來保護數據結構,然後這只是一個佈線UI以呈現文檔的任何給定頁面(或整個文檔)通過跨越各個區塊,使它仍然是您的代碼其餘部分的一個大文檔。

+0

對不起,我不是更清楚。我正在尋找如何將它分成塊(代碼片段)。多線程PDF文件幾乎沒有任何內容。 – CodaFi

+2

我基本上描述了上面的「如何」 - 然而,對於代碼片段來說代碼太多了,所以我建議的實際實現僅作爲練習給讀者。 ;) – jkh

+0

哈哈,好的。無論如何,這是偉大的建議。 – CodaFi