본문 바로가기

IT

iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (1) 1. 왜 동시성(Concurrent) 프로그래밍이 필요할까? 1) 쓰레드란 무엇인가? 예시 8코어 16쓰레드 우리가 사용하는 HW 제품안에는 여러개의 코어가 존재하고, 코어를 세분화하면 쓰레드로 나뉘어진다. “작업 명령 → HW 작업 필요 → 코어내 쓰레드 작업 실시” 매커니즘에 준수하여 SW 작업을 처리한다. 그리고 앱개발을 하다보면 쓰레드와 연관된 문제가 발생한다. 평소 우리가 앱개발을 하면서 화면이 버벅이는 현상이 발생하는데 해당 사유는 여러 일처리를 하나의 쓰레드에서 진행하다 보니 일이 제때 처리되지 않아 버벅이는 현상이다. 2) iOS 에서의 쓰레드 처리 작업(Task)을 어떻게 다른 쓰레드에서 동시에 일을 하게 할 수 있을까? → 작업(Task)을 “대기행렬”에 보내기만 하면 된다. → 작업(.. 더보기
iOS Concurrency 프로그래밍, 동기/비동기 처리, GCD/Operation 에 대한 이해 (0) 목적 iOS 프로그래밍을 진행하면서 네트워크 통신을 필수적으로 하게 된다. 그리고 그 과정에서 GCD를 사용하여 비동기로 데이터를 받는 작업을 진행하며, 작업을 통해 데이터를 받아오는 작업이 끝나는 시점에서 @escaping closure를 통해 데이터를 반환 받아 데이터를 뷰에 그려준다. 하지만 위와 같은 작업과 관련하여 추상적 개념을 알뿐 구체적으로 어떤 원리로 인하여 작동하는지에 대하여 모르다 보니 비동기 작업과 관련된 라이브러리 사용이나 기술스택 사용시 어려움을 느꼈다. (RxSwift, Combine 등) 이에 따라 iOS에서의 동시성 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation 큐에 대하여 명확히 이해하기 위해 인프런에 올라온 앨런님의 인강을 보고 해당 내용을 정리하고, 해당.. 더보기