투케이2K

606. (ios/swift5) [간단 소스] DispatchWorkItem 간단 설명 및 사용 옵션 정리 본문

IOS

606. (ios/swift5) [간단 소스] DispatchWorkItem 간단 설명 및 사용 옵션 정리

투케이2K 2024. 12. 5. 21:01

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift


- 개발 툴 : Xcode


- 기술 구분 : DispatchWorkItem / 작업 캡슐화 / 이벤트 핸들러

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. DispatchWorkItem 은 작업 (task) 의 캡슐화를 수행할 수 있는 클래스로 작업 항목 이벤트 등록 , 취소 핸들러로 사용할 수 있습니다


2. DispatchWorkItem 사용 가능 지원 범위 : 

  >> iOS 8.0 이상
  >> 아이패드OS 8.0 이상
  >> 맥 카탈리스트 13.0+
  >> 맥OS 10.10+
  >> tvOS 9.0 이상
  >> 비전OS 1.0+
  >> 워치OS 2.0 이상
  >> Xcode 6.0.1+


3. DispatchWorkItem 작업 항목 생성 관련 : 

  >> init(qos: DispatchQoS, flags: DispatchWorkItemFlags, block: () -> Void) : 기존 블록에서 새로운 디스패치 작업 항목을 만들고 지정된 서비스 품질 클래스를 할당합니다


4. DispatchWorkItem 작업 항목 실행 관련 : 

  >> func perform() : 현재 스레드에서 작업 항목의 블록을 동기적으로 실행합니다


5. DispatchWorkItem 완료 핸들러 추가 관련 : 

  >> func notify(queue: DispatchQueue, execute: DispatchWorkItem) : 현재 작업 항목이 완료된 후 지정된 작업 항목의 실행을 예약합니다.
  >> func notify(qos: DispatchQoS, flags: DispatchWorkItemFlags, queue: DispatchQueue, execute: () -> Void) : 현재 작업 항목이 완료된 후, 지정된 서비스 품질로 지정된 작업 항목의 실행을 예약합니다.


6. DispatchWorkItem 작업 완료 기다리기 관련 : 

  >> func wait() : 호출자가 디스패치 작업 항목 실행이 완료될 때까지 동기적으로 대기하도록 합니다.
  >> func wait(timeout: DispatchTime) -> DispatchTimeoutResult : 호출자가 디스패치 작업 항목 실행이 완료되거나 지정된 시간이 경과할 때까지 동기적으로 대기하도록 합니다.
  >> func wait(wallTimeout: DispatchWallTime) -> DispatchTimeoutResult : 호출자가 디스패치 작업 항목 실행이 완료되거나 지정된 시간이 경과할 때까지 동기적으로 대기하도록 합니다.
  >> struct DispatchTime : 기본 시계를 기준으로 한 시간 지점이며 나노초 단위의 정밀도를 갖습니다.
  >> struct DispatchWallTime : 벽시계에 따른 절대적 시점이며 마이크로초 단위의 정밀도를 가집니다.


7. DispatchWorkItem 작업 항목 취소 관련 : 

  >> func cancel() : 현재 작업 항목을 비동기적으로 취소합니다.
  >> var isCancelled: Bool : 작업 항목이 취소되었는지 여부를 나타내는 부울 값입니다.


8. DispatchWorkItem 초기화 관련 : 

  >> init(flags: DispatchWorkItemFlags, block: () -> Void)


9. DispatchWorkItem 사용 예시 소스 코드 : 

  let workItem = DispatchWorkItem {
      print(" @@@@@@@@@@@@@ Work item executed @@@@@@@@@@@@@ ")
  }

  let delay = DispatchTime.now() + 5 // [5초 후에 실행]
  DispatchQueue.main.asyncAfter(deadline: delay, execute: workItem)

  // workItem.cancel() // [예정 된 작업 취소]

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://developer.apple.com/documentation/dispatch/dispatchworkitem

https://blog.naver.com/kkh0977/223576532319?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments