본문 바로가기

분류 전체보기140

iOS - 디스패치큐 알아보기 - main, global(), private 디스패치큐 알아보기 cocoa application에서 기본으로 제공하는 큐입니다 개요 DispatchQueu의 문서를 보면 아래와 같습니다 main은 type프로퍼티 gloabl()은 타입 메서드로 qos에 옵션을 지정할 수 있습니다 main 큐 main큐는 메인 쓰레드에서 task를 처리하는 Serial 타입의 큐입니다 UI와 관련된 task들은 모두 main큐에서 처리되어야 합니다 UI가 막히지 않고 가장 먼저 처리될 수 있도록 해야하기 때문입니다. Serial타입이기 때문에 모든 task는 순차적으로 처리되는데 앱의 실행루프(run loop)와 함께 처리되기 때문에 sync로 동작할 시 데드락 발생위험이 존재합니다 main큐의 sync에 대한 포스팅 main큐에서 sync하지 않는 이유 globa.. 2022. 7. 15.

iOS - DispatchQueue 알아보기 Dispatch Queue 살펴보기 iOS에서 멀티쓰레딩을 위해 가장 효율적인 방법으로 큐 라는 것이 이있습니다 DispatchQueue는 큐라는 이름에서 알 수 있듯이 FIFO구조의 작업 관리 객체입니다 메인 쓰레드 혹은 백그라운드 쓰레드에서 작업할 순서를 관리하며 순차 또는 동시에 처리하도록 지정할 수 있습니다 코드블럭을 Dispatch Queue에 넣어 Task를 정의합니다 DispatchQeue 타입 1) Serial 직렬이란 뜻 그대로 큐에 담긴 작업들은 순차적으로 처리합니다 한 순간에 하나의 작업만 처리하며 DiapatchQueue.main.async에서 봤던 main큐가 Serial타입입니다 main queue는 메인쓰레드와 연결된 Diapatch queue입니다 2) Concurrent 동.. 2022. 7. 14.

iOS - DispatchGroup알아보기 DispatchGroup 작업을 Group으로 묶어 관리할 수 있는 하나의 개체 DispatchGroup Dispatch 그룹은 작업을 하나의 그룹으로 묶어서 동기화 시킬 수도 있고 completion hander를 정의하면 작업이 끝났을 때의 동작을 실행할 수 있습니다 그럼 아래 그림을 보면 DispatchGroup 사용목적을 쉽게 이해할 수 있습니다 사용방법은 아래와 같습니다 DispatchGroup생성하고 큐에 작업을 넣을 때 그룹을 지정하면 됩니다 //그룹 생성 let group1 = DispatchGroup() //Task정의시 group 지정 DispatchQueue.global().async(group: group1) { // task } 서로 다른 큐에 넣을 때 도 동일한 그룹으로 묶을 수.. 2022. 7. 13.