我從地址簿文檔的意義以及對底層CoreData實現的理解表明,地址簿應該是線程安全的,並且使得來自多個線程的查詢應該沒有問題。但是我很難在文檔中找到關於線程安全的明確討論。這引出了一些問題:地址簿線程安全和性能
- 在多線程上使用+ sharedAddressBook以安全地訪問只讀嗎?我相信答案是肯定的。
- 對於後臺線程的寫入訪問,您應該改爲使用+ addressBook(並手動保存更改)。我是否理解正確?
- 有沒有人調查過對多個線程進行多個同時查詢到地址簿的性能影響?這應該與在多個線程上進行多個CoreData查詢的性能非常相似。我的感覺是,通過進行並行查詢,我可以獲得很少的收益,因爲我們假設他們在碰到SQLLite時會序列化,但我不確定。
我需要對AddressBook進行幾十個查詢(一些複雜的),並且在後臺線程上使用NSOperation來避免阻塞UI(它目前所做的)。我的根本問題是,將最大併發操作設置爲大於1的值是否有意義,以及如果應用程序也可能在另一個線程上同時寫入AddressBook,是否存在任何危險。
地址簿框架目前(並非總是如此)使用核心數據是您應該忽略的實現細節,並不一定能保證線程安全。 你能提供一個鏈接指出地址簿API是線程安全的文檔嗎?我無法找到文檔中描述的線程策略。 – 2009-07-16 14:53:30
我無法找到它。這是我在第一段中提到的觀點。我無法在任何文檔中找到有關使用AB進行線程化的明確討論。但假設它不是線程安全的,就會產生很大的複雜性,這是不太需要的(我不能找到關於如何正確實現的文檔),因此引發了這個問題。 – 2009-07-16 17:21:48