멀티 스레드 환경에서 여러가지 작업을 동시에 처리하는 기술을 뜻함여러개의 스레드를 이용 효율적 작업 처리가 가능효율적 -> 사용성 / 반응성 / 성능이 개선된다.여러 개의 코어가 하나의 작업을 분담해서 처리하는 방식큰 영상 혹은 그래픽 처리시 여러개의 CPU가 이미지를
멀티 코어 환경 / 멀티 스레드 환경에서 최적화된 프로그래밍을 할 수 있는 기술개발자가 직접 코어와 스레드를 관리하지 않아도 시스템에서 관리DispatchQueue에 작업을 넘겨주면 알아서 동작하는 것DispatchQueue는 GCD를 사용하기 위한 대기열이 대기열에
무엇에 더 많은 에너기를 쏟을까의 맥락우선순위가 높을 수록 더 많은 전력을 소모DispatchQoS는 열거형 / 6개의 클래스가 존재User-interfaceUser-initiatedDefaultUtilityBackgroundUnspecified
코드예DispatchQueue의 async 코드 블록을 묶어서 관리해주는 DispatchGroup시리즈의 QualityOfService 문서를 참고DispatchWorkItemFlags의 값을 받는 파라미터한번에 여러 속성 부여 가능assingCurrentContext
비동기적으로 처리되는 작업들을 묶는 기능async들을 묶어서 그룹의 작업이 끝나는 시점을 추적 / 어떠한 동작을 수행DispatchGroup은 async에서만 사용 가능notify, wait, enter, leave이 존재DispatchGroup은 초기화 구문이 없음D
여러개의 스레드를 사용하는 환경에서 코드가 동시에 실행되어 하나의 값에 동시에 접근하는 경우가 발생card 배열은 1이 하나만 존재하는데 여러개의 카드를 선택Race Condition의 발생하는 이유는 스위프트가 Thread Safe하지 않다는 것Thread Safe하
GCD를 객체지향적으로 진화시킨 high leval apiGCD를 캡슐 / 객체화 해낸것operation을 사용하면 동시성 프로그래밍과 관련된 모든 작업들은 Operation 객체로 생성Operation 객체는 각각 직접 실행 가능 + OperationQueue에서 실
operation의 상태를 추적할 수 있는 프로퍼티가 존재모두 읽기 전용 프로퍼티기대와는 달리 cancel() 메서드는 실행 중인 operation의 동작을 직접적으로 취소시키지 않음cancel() 메서드는 isCancelled 프로퍼티 값만 True로 변환 시켜주는
OperationQueue는 operation을 호출operation을 queue에 추가하면 실행될 때까지 queue에 남아있게 됨추가한 operation을 직접 삭제 불가완료되지 않은 작업을 대기열에 중단시키면 queue / operaion이 메모리에 그대로 남아있는