2011-09-09 2 views
2

텍스처와 사운드 효과가 미리 적용됩니다. 개발중인 iOS 게임에서 원활한 사용자 환경을 만들기 위해 비동기 적으로 수행해야합니다.NSOperationQueue와 NSThread 우선 순위 - NSOperationQueue에서 CPU 사용량 조절하기

나는 게임 플레이 중에 이러한 게임 리소스를로드하기 위해 NSOperationQueue와 NSThread 사이를 결정하려고합니다.

NSOperationQueue는 명확한 승자로 보이며 많은 이점이 있지만이 '백그라운드'리소스 로딩 작업에 대한 효과적인 우선 순위 제어가 필요하므로 걱정하지 않으셔서 소비하는 사이클 수를 줄일 수 있습니다. 프레임 속도에 영향을주지 않습니다.

NSOperationQueue는 '우선 순위'개념을 가지고 있지만 NSThread의 '우선 순위'개념과 다르게 보입니다. 내가 틀렸다면 정정하십시오. 그러나 NSThread의 우선 순위는 시스템에서 실행중인 다른 스레드와 관련되어 있으며 NSOperation의 우선 순위는 대기중인 다른 작업과 관련하여 해당 작업의 우선 순위입니다.

는 내가 알고 싶은 것은

는 관련 주어진 NSOperationQueue 작업의 우선 순위를 제어 할 수있는 방법이 .... 얼마나 많은 (다른 대기 작업 대 상대적인 우선 순위에 반대) 사이클이 현재 장치에서 실행중인 다른 스레드와 비교하여 소비 할 수 있습니까?

NSOperationQueue의 작업 내에서 현재 스레드의 우선 순위를 변경하는 것이 안전합니까? (NSThread의 + setPriority 사용)

답변

4

NSOperation의 인스턴스에는 'setQueuePriority :'와 함께 'setThreadPriority :'메서드도 있습니다.

이것은 분명히 당신이 찾고있는 것입니다. 사용자가 지정한

- (void)setThreadPriority:(double)priority 

값은 운영 체제의 우선 순위 값에 매핑됩니다. 지정된 thread 우선 순위는, 조작의 main 메소드의 실행 중에 만 thread에 적용됩니다. 작업의 완료 블록이 실행되는 동안 적용되지 않습니다. 스레드를 직접 생성하는 동시 작업의 경우 사용자 지정 시작 방법에서 스레드 우선 순위를 직접 설정하고 작업이 끝나면 원래의 우선 순위를 다시 설정해야합니다.

+0

감사합니다 ... 내가 어떻게 그것을 놓쳤는지 확실하지 않지만, 이것이 내가 찾고 있었던 것이 분명합니다. – mattorb