[iOS][Swift] GCD (Grand Central Dispatch) 이해하기: 동시성과 병렬성

Jay·2023년 7월 27일
0

iOS

목록 보기
6/47

GCD (Grand Central Dispatch)는 애플이 개발한 멀티코어 프로세싱을 위한 기술로서, Swift 프로그래밍에서 매우 중요한 역할을 담당합니다. 이 기술은 기본적으로 비동기 프로그래밍을 단순화하며, 동시에 실행되는 작업의 성능을 최적화합니다. 이를 통해 애플리케이션의 성능을 향상시키고, 특히 사용자 인터페이스의 반응성을 유지합니다.

GCD의 주요 기능:

비동기 작업 처리: 오랜 시간이 걸리는 작업을 주 스레드에서 실행하는 것은 사용자 인터페이스의 반응성을 저하시킵니다. GCD를 사용하면 이러한 작업을 비동기적으로 처리하여 주 스레드를 통해 다른 중요한 작업에 집중할 수 있습니다.

멀티 코어 활용: 현대 컴퓨터 시스템은 대부분 멀티 코어 프로세서를 사용하고 있습니다. GCD는 이러한 멀티 코어 프로세서를 최대한 활용하여 작업을 병렬로 실행하는 것을 가능하게 합니다. 이를 통해 작업의 실행 시간을 단축시키고, 애플리케이션의 전반적인 성능을 향상시킬 수 있습니다.

스레드 관리의 간편화: 스레드를 직접 관리하는 것은 복잡하고 오류가 발생하기 쉽습니다. GCD는 애플리케이션의 작업 로드를 기반으로 스레드를 자동으로 생성하고 관리하는 기능을 제공합니다. 이를 통해 개발자는 복잡한 스레드 관리에서 벗어나, 비즈니스 로직에 더욱 집중할 수 있습니다.

코드의 간결화 및 가독성 향상: GCD를 사용하면 복잡한 멀티스레딩 코드를 간단하고 읽기 쉬운 코드로 작성할 수 있습니다. 이는 코드의 가독성을 향상시키고, 디버깅과 유지 보수를 용이하게 만듭니다.

효율적인 동기화 도구: GCD는 데이터 접근을 동기화하고 임계 영역을 보호하는 다양한 도구를 제공합니다. 이를 통해 데이터 경쟁 조건이나 데드락과 같은 복잡한 멀티스레딩 문제를 쉽게 해결할 수 있습니다.

GCD는 다음과 같은 개념을 기반으로 작동합니다:

Dispatch Queues:

GCD의 핵심 컨셉 중 하나는 Dispatch Queues입니다. 이는 작업이 실행되는 대기열로, 각 작업은 FIFO(First In, First Out) 순서로 실행됩니다. 큐는 기본적으로 병렬(Concurrent) 또는 직렬(Serial)입니다.

Dispatch Work Items:

Dispatch Work Items는 큐에 추가할 수 있는 작업 단위입니다.

Dispatch Groups:

Dispatch Groups는 관련된 작업들을 그룹화하고, 그룹의 모든 작업이 완료되면 알림을 받을 수 있는 메커니즘을 제공합니다.

사용 예:

DispatchQueue.global().async {
    // 비동기적으로 실행될 작업
    DispatchQueue.main.async {
        // 주 스레드에서 실행될 작업, 주로 UI 업데이트
    }
}

위의 코드에서 DispatchQueue.global().async { ... }는 전역 dispatch queue (병렬 큐)에서 비동기적으로 코드 블록을 실행합니다. 그리고 DispatchQueue.main.async { ... }는 주 dispatch queue (직렬 큐)에서 비동기적으로 코드 블록을 실행합니다. 주 dispatch queue는 주로 UI 업데이트와 같은 작업에 사용됩니다.

profile
Junior Developer

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

감사합니다. 이런 정보를 나눠주셔서 좋아요.

답글 달기