Notice
Recent Posts
Recent Comments
Link
투케이2K
607. (ios/swift5) [간단 소스] DispatchGroup 간단 설명 및 사용 옵션 정리 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 기술 구분 : DispatchGroup / 작업 그룹
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------
1. DispatchGroup 은 DispatchQueue 들을 그룹으로 묶어서, 후행 클로저 (일이 끝난고 난 다음의 로직 처리) 를 할 때 사용 되는 작업 그룹 관리 클래스입니다
2. DispatchGroup 사용 시 그룹의 모든 작업 실행이 완료할 때까지 동기적으로 기다릴 수도 있습니다
3. DispatchGroup 사용 가능 지원 범위 :
>> iOS 8.0 이상
>> 아이패드OS 8.0 이상
>> 맥 카탈리스트 13.0+
>> 맥OS 10.10+
>> tvOS 9.0 이상
>> 비전OS 1.0+
>> 워치OS 2.0 이상
>> 엑스코드 8.0+
4. DispatchGroup 디스패치 그룹 생성 관련 :
>> init() : 블록 객체를 할당할 수 있는 새로운 그룹을 만듭니다.
5. DispatchGroup 완료 핸들러 추가 관련 :
>> func notify(qos: DispatchQoS, flags: DispatchWorkItemFlags, queue: DispatchQueue, execute: () -> Void) : 현재 그룹의 모든 작업이 실행을 완료하면 지정된 속성을 가진 블록을 대기열에 제출하도록 예약합니다.
>> func notify(queue: DispatchQueue, work: DispatchWorkItem) : 현재 그룹의 모든 작업이 실행을 완료하면 블록을 큐에 제출하도록 예약합니다.
6. DispatchGroup 작업 실행 완료 대기 관련 :
>> func wait() : 이전에 제출된 작업이 완료될 때까지 동기적으로 기다립니다.
>> func wait(timeout: DispatchTime) -> DispatchTimeoutResult : 이전에 제출한 작업이 완료될 때까지 동기적으로 기다리고, 지정된 시간 초과 기간이 지나기 전에 작업이 완료되지 않으면 반환합니다.
>> func wait(wallTimeout: DispatchWallTime) -> DispatchTimeoutResult : 이전에 제출한 작업이 완료될 때까지 동기적으로 기다리고, 지정된 시간 초과 기간이 지나기 전에 작업이 완료되지 않으면 반환합니다.
7. DispatchGroup 그룹 업데이트 작업 관련 :
>> func enter() : 블록이 그룹에 들어왔음을 명시적으로 나타냅니다.
>> func leave() : 그룹 내 블록의 실행이 완료되었음을 명시적으로 나타냅니다.
8. DispatchGroup 사용 예시 소스 코드 :
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)"
])
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://developer.apple.com/documentation/dispatch/dispatchgroup
https://blog.naver.com/kkh0977/223251810305?trackingCode=blog_bloghome_searchlist
https://blog.naver.com/kkh0977/223252303606?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'IOS' 카테고리의 다른 글
609. (ios/swift5) [간단 소스] CBPeripheralManager 간단 설명 및 사용 옵션 정리 (0) | 2024.12.09 |
---|---|
608. (ios/swift5) [유틸 파일] goAppNotificationSettings : 앱 알림 설정 창 이동 수행 (0) | 2024.12.08 |
606. (ios/swift5) [간단 소스] DispatchWorkItem 간단 설명 및 사용 옵션 정리 (0) | 2024.12.05 |
605. (ios/swift5) [간단 소스] NWConnection.State 간단 설명 및 사용 옵션 정리 (0) | 2024.12.04 |
604. (ios/swift5) [간단 소스] WKUIDelegate 간단 설명 및 사용 옵션 정리 (0) | 2024.12.03 |
Comments