Old_SWIFT(221012)/기본이야기

멀티 스레딩을 위한 API(Operation Queue, NSOperation Queue)

KataRN 2022. 9. 30. 10:27
반응형

안녕하세요. KataRN입니다.

 

오늘은 OperationQueue에 대해 알아보겠습니다.

(NSOperation, NSOperationQueue는 Object-C 클래스이고, Swift는 앞에 NS 접두사를 떼면 됩니다.)

 

OperationQueue는 Operation들의 스케쥴링과 실행을 담당하게 됩니다.

Operation이 담겨 Queue처럼 FIFO으로 동작하게 됩니다.

더 높은 우선순위의 작업이 들어오게 되면 낮은 우선순위보다 빠르게 실행되는 우선순위큐 형식입니다.

 

1. addDependency(_:)

다른 Operation에 Dependency를 갖습니다.

현재 operation보다 매개변수의 #Operation#이 더 먼저 완료되어야 하는경우 추가합니다.

이는 작업 큐에 들어가 있을 때 실행됩니다.

operation.dependencies 프로퍼티의 경우 operation에 의존성이 있는 작업을 배열 형식으로 얻을수 있습니다.

 

2. removeDependency(_:)

다른 Operation에 Dependency를 제거합니다.

 

2. queuePriority 

Queue 안에서의 Priority. (get, set)

enum NSOperationQueuePriority : Int {
    case VeryLow
    case Low
    case Normal
    case High
    case VeryHigh
}

 

3. start

operation 실행

 

4. completionBlock( ( ) -> Void )

operation이 끝나고 수행할 작업 지정 completionHandler 클로저같네요?

 

5. cancel

operation 중간에 실행 종료

 

여러가지 operation의 프로퍼티가 있는데, 이를 단독으로 사용하는경우는 효용이 많지는 않습니다.

OperationQueue와 함께 사용해서 queue를 제어하는것이 operation을 직접 제어하는것 보다 권장되며,

또한, 위를 UIKit과 연관해서 사용하기에는 MainThread에서 수행되는 보장이 없으므로 UI를 그릴때 사용하는것은 권장되지 않습니다.

 

오늘도 긴글 읽어주셔서 감사합니다.

반응형