본문 바로가기
iOS/iOS

동시성 프로그래밍 (1) - GCD/Operation에 앞서

by 패쓰킴 2024. 7. 16.
728x90

미루고 미루던 동시성에 대해 공부를 시작했다.

사실 그동안 아무 생각 없이 써오던 DispatchQueue...

대강 그때그때 필요에 의해, 조금씩. 스레드는 뭐구나 동기 비동기는 이런거구나~ 감으로만 알았달까...

이제와서야 동시성 처리에 대한 깊이있는 처리를 해보게 되면서, 진작에 좀 공부할 걸 후회를 시작으로 인강을 먼저 찾아보았다.

몇 년 전 나온 async await에 대한 내용도 좋지만, 기본기 먼저 다져야겠다는 생각으로 GCD와 Operation을 선택했고.

앨런님의 강의를 결재했다.

 

iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션

앨런(Allen) | 동시성(Concurrency)프로그래밍 - iOS프로그래밍에서 필요한 동기, 비동기의 개념 및 그를 확장한 GCD 및 Operation에 관한 모든 내용을 다룹니다., ✍️ 강의 제작 동기 '왜 동기vs비동기 개

www.inflearn.com

 

 

동시성 프로그래밍 이라고 하면 가장 먼저 떠오르는 비동기와 동기가 있고 직렬과 동시가 있다.

뭐.. 직렬 병렬의 연결이 가장 자연스러울 수 있지만, 동시과 병렬의 의미는 다른 의미로 사용된다.

병렬이란, 시스템 적으로 물리적인 스레드에서 실제 동시에 일을 하는 개념이다.. 라고 설명되는데

비동기, 동기, 직렬, 동시 이 개념들의 가장 상위에 있는 느낌? 이려나 

그래서 동시와 병렬의 차이를 찾아보았다.

 

[Study] 동시성(Concurrency) 과 병렬성 (Parallelism) 올바른 개념 잡기 - 기록은 기억을 지배한다

처음에 접하면 항상 헷갈리기 쉬운 동시성(Concurrency) 과 병렬성(Parallelism) 에 대해 정리해보고자 한다. 시간으로 풀어보기 동시성과 병렬성은 각 작업이 진행되는 시간의 관점에서 살펴봐야 올바

vagabond95.me

이 글이 가장 와 닿은 설명이었다.

이해가 쉽게 단순히 정리해 보면!

 

싱글 코어에서 멀티 스레드를 동작 시키는 방식이 동시

멀티 코어에서 멀티 스레드를 동작시키는 방식이 병렬

=>

싱글 스레드 두 개가 나란히 비동기적으로 task를 처리 하고 있다고 하면 동시성을 만족하지만 병렬로 처리 되는 것은 아니다.

싱글 스레드 하나씩 각 하나의 코어 안에서 task를 처리 하고 있다고 하면 동시에 두 개의 코어에서 각 스레드의 task를 처리 하고 있으므로 동시성과 병렬성을 모두 만족한다.

 

그래서 우리는 병렬이 아닌 직렬과 동시에 대한 개념들을 접했던 것.

 

뭔가 비동기랑 동시랑 차이를 잘 모르고 지냈는데

병렬과 동시의 차이를 이해하고 나니 이 두개는 너무나 당연히 다른 것이었다.

 

 

728x90

댓글