2009-06-22 3 views
0

Objective-C를 배우고 있으며, 비디오 처리 응용 프로그램을 개발할 것입니다.코코아에서 연산과 스레드의 차이점

사과의 개발자 가이드를 읽고 작업 개체를 실행했습니다. 난 그냥 약간의 차이점을 알고 싶습니다. 작업 간의 차이는 무엇입니까? & 스레드, 단점, 이점, 사용 사례.

내가 읽은 것으로부터, 작업은 응용 프로그램 프로세스/작업 관리의 상위 레벨입니다. NSOperationQueue는 작업 리소스와 동시성을 처리 할 수 ​​있습니다.

내가 이해할 수없는 것은 작업이 스레드에서 직접 실행될 수 있다는 것인데, 나는이 개념에 너무 명확하지 않습니다. 나는 & 스레드 사이의 차이점을 명확히하지 않을 것입니다.

가능한 한 많은 정보/배경 정보를 제공해주십시오.

많은 분들께 감사드립니다.

답변

2

NSOperation과 스레드 간의 차이점은 추상화 중 하나입니다. 스레드는 여러 수준의 코드를 동시에 실행하는 하위 수준 (운영 체제 수준) 구조입니다. Cocoa는 NSThread API를 제공하지만 본질적으로 pthread API의 래퍼입니다. NSOperation은 실행하려는 작업의 상위 수준 추상화입니다. NSOperationQueueNSOperations의 큐 실행을 스케줄하여 사용 가능한 CPU를 최대한 활용합니다. 멀티 코어 시스템에서는 NSOperationQueue이 유지하는 스레드 풀을 사용하여 복수의 NSOperations이 동시에 실행됩니다. 이 고급 API를 사용하면 일정을 정하는 대신 수행하려는 "작업"에 대해 생각할 수 있다는 장점이 있습니다. 단점 (따라서 NSThread을 직접 사용하는 이점)은 스레드의 예약 및 스레드와 다른 스레드 간의 통신 (자세한 내용은 -[NSObject performSelector:withObject:onThread:] 참조)에 대한 제어 권한이 더 많다는 것입니다. 비디오 처리와 같은 기본 작업의 경우 NSOperation이 가장 적합 할 것입니다.

+0

감사합니다 배리 내 프로그램은 비디오 다이버를위한 테스트 응용 프로그램입니다. 따라서 비디오 파일의 코덱을 디코드하여 응용 프로그램에 전달하고 응용 프로그램 창에 표시해야합니다. 내 응용 프로그램에서 비디오 파일의 여러 프레임이 동시에 디코딩되고, 디코딩 프레임이 파일 프레임 순서로 표시된다는 보장이 없습니다. 마찬가지로 디코딩 된 프레임은 다른 스레드라고 가정하는 화면에 표시됩니다. 귀하의 의견으로는 콜백 함수, 스레드 또는 연산을 사용해야합니까? 응용 프로그램에는 특정 작업이 있기 때문에 작업을 해결하면됩니다. – ReachConnection