GCD根據4個全局優先級隊列(高,默認,低,背景)啓用塊調度。 我有幾個NSOperationQueues在我的應用程序,但希望運行在不同的優先級。據我所知,NSOperationQueue是一個關於GCD的抽象,並且希望爲NSOperationQueue設置不同的優先級(類似於GCD優先級隊列)。有沒有辦法做到這一點? (發現它可以設置一個操作的優先級,但不是隊列本身)。將優先級設置爲NSOperationQueue
6
A
回答
1
來自NSOperationQueue Class Reference的報價。在隊列內
操作(但尚未執行的)本身 根據優先級等級和交互操作對象 依賴性組織,並且相應地執行。
操作間依賴關係爲 操作提供絕對執行順序,即使這些操作位於不同的 操作隊列中。操作對象不被視爲準備好執行,直到其所有從屬操作完成執行。 對於那些準備執行操作,操作隊列總是 執行一個優先相對於其他準備 操作最高。
這意味着通過設計,您不能爲隊列設置優先級,但NSOperationQueue將根據操作的單獨優先級爲各個操作使用GCD全局隊列。
-2
5
與iOS 8開始,NSOperationQueue有qualityOfService
屬性,它做什麼,我覺得OP的意思。來自Class Reference:
此屬性指定應用於添加到隊列的操作對象 的服務級別。如果操作對象具有顯式服務 級別集,則會使用該值。 [...]
服務級別會影響操作對象爲 的優先級,因爲該系統資源可以訪問系統資源,例如CPU時間,網絡資源,磁盤資源等等。對服務質量較高的操作 級別給予比系統資源更高的優先級,以便它們可以更快地執行其任務。您使用服務級別來確保 響應明確的用戶請求的操作的優先級低於關鍵性較低的工作。
同樣在iOS 8中,您可以更改使用哪個GCD隊列與underlyingQueue
屬性,並因此選擇具有所需優先級的全局GCD隊列。
相關問題
- 1. 我們如何設置[[NSOperationQueue new] addOperationWithBlock的優先級:?
- 2. NSOperationQueue VS並行線程的優先級
- 3. 設置優先級導致
- 4. Flex iframe設置優先級?
- 5. AsyncTask設置優先級
- 6. 爲什麼muset將freertos優先級組設置爲group_4?
- 7. 有沒有辦法將Web Worker設置爲低優先級?
- 8. 將線程優先級設置爲高C
- 9. sitemap.xml正常優先級設置drupal 7
- 10. UIStackView設置子視圖的優先級
- 11. 設置排球優先級ImageLoader
- 12. 設置CoreData NSManagedObjectContext線程優先級
- 13. 在DatabaseReference.updateChildren()調用中設置優先級?
- 14. 如何設置Robotium測試優先級?
- 15. 如何設置Rails的優先級ActionMailer
- 16. Android Camera Client優先級設置如何?
- 17. 在HTML事件中設置優先級
- 18. 在按鈕上設置優先級
- 19. SQL中的設置優先級
- 20. 設置VB.NET事件的優先級
- 21. SSIS設置優先級,以一個
- 22. 如何設置DispatcherTimer的優先級?
- 23. 通過了解線程的優先級來設置線程的優先級
- 24. 優先級隊列中的優先級
- 25. 優先上傳優先級,以高優先級使用HTB qdiscs
- 26. Firebase:在設置孫子時,服務器上的優先級設置爲空,而客戶端上的優先級設置爲空
- 27. 如何在java中爲多個線程設置優先級
- 28. 無法使用Angularfire 0.8爲$ asObject()的子鍵設置優先級
- 29. 如何在MemSql中爲查詢設置優先級
- 30. 不同級別的視圖狀態等設置的優先級
不,NSOperationQueue只使用一個GCD全局隊列,默認優先級爲1。 NSOperation優先的概念是不相關的。 – das 2013-04-10 02:09:05
我沒有聲稱它使用具有不同優先級的GCD全局隊列。我所說的並且意在說的是,它依賴於操作的個人優先級來執行任務。 @das – svena 2013-04-10 05:05:02
好吧,你提到的'GCD全球隊列'(複數)讓我印象深刻 – das 2013-04-10 06:10:08