3
這個問題幾乎涵蓋了這一切。如果我將N個塊放入NSManagedObjectContext的隊列中,它會按順序執行它們,保證它們還是有可能會有一些可能被擾亂?NSManagedObjectContext的performBlock方法是否可以保證操作的順序?
這個問題幾乎涵蓋了這一切。如果我將N個塊放入NSManagedObjectContext的隊列中,它會按順序執行它們,保證它們還是有可能會有一些可能被擾亂?NSManagedObjectContext的performBlock方法是否可以保證操作的順序?
我看不出爲什麼NSManagedObjectContext不會在內部使用GCD,並且GCD隊列嚴格是FIFO。當然,我沒有證據可以證實這一點,但對我來說這是非常有意義的,因爲performBlock
的目標是線程安全的,並且在給定的上下文中一次只執行一個操作,爲什麼Apple會從零開始編寫一個系統當一個完美功能的(GCD)已經存在時。
當您使用多個隊列時,依賴關係爲。關於這個問題的每一段文字和視頻都說隊列本身就是FIFO。但是,併發隊列可能會以看似隨機的順序完成任務,因爲它們將並行執行,但它們將在FIFO中啓動。儘管這種類型的隊列不適合管理對象上下文,但它的目標是在任何給定的時間只執行一次操作。 – borrrden
然後我想我真的誤解了我正在閱讀的主題。有時間重新閱讀參考文獻。雖然......也許我對隊列運行多個併發操作的能力感到困惑,如果一個操作依賴於以前的操作,那麼依賴關係纔有意義... – RonLugge
我認爲如果您使用'.PrivateQueueConcurrencyType 'type - 所以基本上是一個臨時的MOC,它是併發的,雖然它們是以FIFO開始的,但它們不會按照相同的順序完成,但只有'performBlock'才能發生,它也發生在我身上。我最後排隊了一個** save **塊,但其他一些塊最後完成了,這給我帶來了麻煩。 –