develop

DispatchWorkItem 본문

iOS

DispatchWorkItem

pikachu987 2021. 2. 3. 21:01
반응형
let workItem = DispatchWorkItem {
    print("work Item")
}
workItem.perform()
work Item

생성자에 block을 넣는다.

perform 메서드로 block를 실행한다.

 

let workItem = DispatchWorkItem {
    print("work Item")
}
workItem.notify(queue: DispatchQueue.main) {
    print("notify")
}
workItem.perform()
work Item
notify

workItem이 끝나면 notify로 알림을 받을수 있다.

 

let workItem = DispatchWorkItem {
    print("work Item")
}
let completeWorkItem = DispatchWorkItem {
    print("complete WorkItem")
}
workItem.notify(queue: DispatchQueue.global(), execute: completeWorkItem)
workItem.perform()
work Item
complete WorkItem

notify에 workItem을 넣을수도 있다.

 

let workItem = DispatchWorkItem {
    print("work Item")
}
workItem.notify(queue: DispatchQueue.main) {
    print("notify isCancelled: \(workItem.isCancelled)")
}
workItem.cancel()
workItem.perform()
notify isCancelled: true

cancel메서드는 WorkItem의 블럭을 취소할 수 있다.

취소가 되더라도 notify에 알림이 온다. 취소된 값은 isCancelled으로 볼 수 있다.

 

workItem.wait(timeout: .now() + 3)

wait 메서드로 작업을 지연시킬수도 있다.

 

let workItem = DispatchWorkItem {
    print("work Item")
}

DispatchQueue.main.async(execute: workItem)
DispatchQueue.global().async(execute: workItem)
work Item
work Item

GCD에 workItem을 넣을수도 있다.

반응형

'iOS' 카테고리의 다른 글

OperationQueue  (0) 2021.02.05
Thread  (0) 2021.02.04
LazySequence  (0) 2021.02.02
Property(Stored Property, Lazy Property, Computed Property, Property Observers, Type Property)  (0) 2021.02.01
KVC KVO (Key-Value Coding, Key-Value Observing)  (0) 2021.01.31
Comments