2011-09-09 18 views
2

我有一些紋理和聲音效果預加載需要異步執行以在我正在開發的iOS遊戲中創建流暢的用戶體驗。NSOperationQueue vs NSThread Priority - 控制在NS操作系統中消耗多少cpu

我想在NSOperationQueue和NSThread之間決定在遊戲過程中加載這些遊戲資源。

NSOperationQueue似乎是一個明顯的贏家,並且有許多好處,但我擔心對這個「背景」資源加載任務有效的優先級控制,這樣我可以根據它消耗多少個週期來關閉它以免影響幀速率。

我看到NSOperationQueue有一個「優先級」的概念,但它看起來不同於NSThread的'優先級'概念。如果我錯了,請糾正我,但是NSThread的優先級與系統上運行的其他線程有關,NSOperation的優先級是該任務相對於其他排隊任務的優先級。

我想知道的是....

有沒有辦法來控制相對於一個給定的NSOperationQueue任務的優先級多少個週期(而不是相對優先級對其他排隊的任務),它與當前在設備上運行的其他線程相比可以消耗多少?

在NSOperationQueue的任務中安全地更改當前線程的優先級是否安全? (帶有NSThread的+ setPriority)

回答

4

NSOperation的一個實例還有一個'setThreadPriority:'方法,以及'setQueuePriority:'。

這絕對是你在找什麼。

- (void)setThreadPriority:(double)priority 

指定的值映射到操作系統的優先級值。指定的線程優先級僅在操作的主方法執行時應用於線程。它在操作的完成塊正在執行時不會被應用。對於創建自己的線程的併發操作,必須在自定義啓動方法中自行設置線程優先級,並在操作完成時重置原始優先級。

+0

謝謝...不知道我是如何錯過的,但這絕對是我一直在尋找的。 – mattorb