투케이2K

151. (swift5/xcode) DispatchGroup 사용해 작업 그룹 묶음 및 순차 로직 처리 실시 (waitGroup.notify) - DispatchQueue 본문

Swift

151. (swift5/xcode) DispatchGroup 사용해 작업 그룹 묶음 및 순차 로직 처리 실시 (waitGroup.notify) - DispatchQueue

투케이2K 2023. 10. 31. 18:32

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [테스트 메인 함수 정의 실시]
    // -----------------------------------------------------------------------------------------
    func testMain() {
        S_Log._D_(description: "테스트 함수 시작 실시", data: nil)
        
        
        /*
         ------------------------------------
         [요약 설명]
         ------------------------------------
         1. Dispatch Group : DispatchQueue 들을 그룹으로 묶어서, 후행 클로저 (일이 끝난고 난 다음의 로직 처리) 를 할 때 사용 됩니다
         ------------------------------------
         2. enter() : 선행 시작을 알립니다
         ------------------------------------
         3. leave() : 실행이 끝난 다는 것을 알립니다
         ------------------------------------
         4. notify() : 그룹 작업이 완료 되었음을 알립니다
         ------------------------------------
         */
        
        
        // [로직 처리 실시]
        var one = 0
        var two = 0
        
        
        let waitGroup = DispatchGroup() // [그룹]
        let jobQueue = DispatchQueue.main // [작업 큐]
        
        
        waitGroup.enter() // 선행 시작을 알림
        jobQueue.async {
            one = 1 // 변수 값 삽입
            
            Thread.sleep(forTimeInterval: 1.0) // 1 초 간 정지
            
            waitGroup.leave() // 실행 종료
        }
        
        
        waitGroup.enter() // 선행 시작을 알림
        jobQueue.async {
            two = 2 // 변수 값 삽입
            
            Thread.sleep(forTimeInterval: 1.0) // 1 초 간 정지
            
            waitGroup.leave() // 실행 종료
        }
        
        
        waitGroup.notify(queue: jobQueue) {
            S_Log._D_(description: "그룹 작업 실행 종료", data: [
                "one :: \(one)",
                "two :: \(two)"
            ])
        }

    }
 

[결과 출력]

 

================================================================
LOG :: CLASS PLACE :: A_Webview.swift :: testMain() :: 1239
-------------------------------------------------
LOG :: NOW TIME :: 2023-10-31 18:25:11
-------------------------------------------------
LOG :: DESCRIPTION :: 그룹 작업 실행 종료
-------------------------------------------------
LOG :: one :: 1
-------------------------------------------------
LOG :: two :: 2
================================================================

 

반응형
Comments