Swift DispatchGroup

mystic·2024년 1월 13일
0

iOS앱을 만들다보면 데이터들의 연산이 많이 필요해서 멀티쓰레딩이 필요할때가 있습니다.
이번에 앱을 개발하던중 한 View에서 처리해야할 데이터들의 양이 많아졌고 이로인해 Swift GCD를 사용하여 멀티쓰레딩 방식을 사용하였습니다.
여기까지는 이전에 해봤던 방식이었지만 이번에는 UI/UX적인 측면에서 멀티쓰레딩이 끝난다음에 특정 코드를 실행하는 방법을 고민해보게 되었습니다.
처음에는 Dispatchqueue.main.asyncAfter함수를 사용하는 방법을 생각했지만 좋은 방법이 아닌것같아 좀더 찾아보았고 방법을 찾게되었습니다.

DispatchGroup()이라는 API를 사용하여서 GCD를 사용할때 group파라미터에 미리 할당한 DispatchGroup을 전달해주고 DispatchGroup.notify를 사용하여서 쓰레드의 상태들을 파악할 수 있는 방법이었습니다.
코드로 보면 다음과 같습니다.

            let dispatchGroup = DispatchGroup()
            DispatchQueue.global(qos: .background).async(group: dispatchGroup) {
                foo1()
                foo2()
            }
            dispatchGroup.notify(queue: .global(qos: .background)) {
                foo3()
            }
profile
iOS를 좋아하는 학생

0개의 댓글