 iOS/동시성 프로그래밍

GCD / Operation 의 선택 sync (동기) 와 async (비동기) 차이점을 배우면서, Task 2, 3, 4 를 Queue 에 보냈다. 이제 GCD or Operation 은 Queue 에 쌓여있는 Task 를 다른 Thread 로 보내야한다. 어떠한 방식으로 Thread 에게 Task 를 분배할까? 이는 바로 Queue 의 특성에 따라 결정된다. Serial (직렬) 과 Concurrent (동시) 어떤 Queue 를 선택하느냐에 따라 Serial 과 Concurrent 로 나뉠 수 있다. 1. Serial (직렬) Queue 한 개의 Thread 에서 모든 Task 를 다 처리한다. 2. Concurrent (동시) Queue 여러 개의 Thread 에서 Task 를 처리한다. Seri..
DispatchQueue 로 Task 를 전달한 Main Thread GCD 의 Queue 인 Dispatch Queue 에 Task 를 전달한 Main Thread. 이제 Task 1 은 GCD 가 Thread 를 생성하여 Task 1 을 분배한 후, Task 1 이 종료되면 생성한 Thread 를 삭제할 것이다. 그럼 Main Thread 는 남은 Task 2, 3, 4 를 어떻게 처리할까? 두 가지로 나누어 생각해 볼 수 있다. 1. 비동기 (async) : 바로 Task 2 를 받아서 수행한다. Queue 에 보낸 작업이 끝나는 것을 기다리지 않고 이어서 Task 를 수행하는 것. 앞서 DispatchQueue.global().async 를 설명했었다. 아래와 같이 남은 Task 2, 3, 4 를..
동시성 프로그래밍 코드를 작성할 때 별도의 처리를 하지 않았다면, Main Thread 에서 View 를 그리는 일부터 시작해서 다른 모든 Task 들을 처리하고 있었다. 단순 계산은 금방 처리하여도, 서버에서 데이터를 가져오는 등 무거운 Task 를 처리하면서 View 를 그리는 작업을 책임지는 Main Thread 는 해야할 많은 Task 에 부담을 느낀다. 그러므로 Main Thread 의 부담을 줄이기 위해 아래와 같이 다른 Thread 에서도 이러한 Task 를 동시에 작업하도록 하는 것이 바로 동시성 프로그래밍이다. 그렇다면 어떻게 다른 Thread 로 Task 를 전달할 수 있을까? iOS 에서는 이러한 작업을 queue 라는 곳에 보내기만 하면 된다. 동시성 프로그래밍을 위해 지원하는 iO..
Younngjun
' iOS/동시성 프로그래밍' 카테고리의 글 목록