ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS [Swift] - DispatchGroup
    iOS Develop 2023. 5. 8. 13:55
    반응형

    DispatchGroup

    • DispatchQueue는 Tread를 Safe하게 관리할 수 있는 도구이다.
    • 특징
      • DispatchQueue들을 Group으로 묶어서 trailing closure를 할 수 있도록 한다.
      • 서로 다른 성격의 Queue들을 Group으로 묶어서 사용 가능하다.
      • enter와 leave의 위치를 작업 단위로 설정하여 개발자가 원하는 작업의 범위를 지정할 수 있다. 아래 예시는 for문 한 사이클을 1작업으로 두고 enter & leave를 했지만, for문 밖에 enter & leave를 한다면 총 1쌍으로 notify를 보낼 수 있다.
    • 예시
    let dispatchGroup = DispatchGroup()
    
    func queueTask(number: Int,
                completionHandler: @escaping (String) -> Void) {
    
      // 여기서 시간이 지연되는 작업이 있어도 끝날 때까지 Wait
    //  sleep(2)
      completionHandler("Number \(number) is Entered.")
    }
    
    for i in 0..<10 {
      dispatchGroup.enter()
      print("")
      print("=========== dispatchGroup.enter(\(i)) ===========")
      print("")
      queueTask(number: i) { text in
        print(text)
        
        dispatchGroup.leave()
        print("")
        print("=========== dispatchGroup.leave(\(i)) ===========")
        print("")
        print("_________________________________________________")
        print("")
      }
    }
    
    dispatchGroup.notify(queue: .main) {
      print("This is Dispatch Group Notify")
    }
    
    
    // 출력 결과
    /**
    
    =========== dispatchGroup.enter(0) ===========
    
    Number 0 is Entered.
    
    =========== dispatchGroup.leave(0) ===========
    
    _________________________________________________
    
    
    =========== dispatchGroup.enter(1) ===========
    
    Number 1 is Entered.
    
    =========== dispatchGroup.leave(1) ===========
    
    _________________________________________________
    
    ...
    ...
    ... 
    
    _________________________________________________
    
    
    =========== dispatchGroup.enter(9) ===========
    
    Number 9 is Entered.
    
    =========== dispatchGroup.leave(9) ===========
    
    _________________________________________________
    
    This is Dispatch Group Notify
    
     */

    'iOS Develop' 카테고리의 다른 글

    WWDC 2024  (0) 2024.07.30
    Privacy Manifest  (0) 2024.07.30
    iOS [Swift] - Keychain 정리  (0) 2023.02.14
    iOS [Swift] - OAuth 개념 스터디  (0) 2023.02.14
    iOS [Swift] - Moya를 통한 네트워크 통신  (0) 2023.02.14
Designed by Tistory.