미루고 미루던 동시성에 대해 공부를 시작했다.
사실 그동안 아무 생각 없이 써오던 DispatchQueue...
대강 그때그때 필요에 의해, 조금씩. 스레드는 뭐구나 동기 비동기는 이런거구나~ 감으로만 알았달까...
이제와서야 동시성 처리에 대한 깊이있는 처리를 해보게 되면서, 진작에 좀 공부할 걸 후회를 시작으로 인강을 먼저 찾아보았다.
몇 년 전 나온 async await에 대한 내용도 좋지만, 기본기 먼저 다져야겠다는 생각으로 GCD와 Operation을 선택했고.
앨런님의 강의를 결재했다.
동시성 프로그래밍 이라고 하면 가장 먼저 떠오르는 비동기와 동기가 있고 직렬과 동시가 있다.
뭐.. 직렬 병렬의 연결이 가장 자연스러울 수 있지만, 동시과 병렬의 의미는 다른 의미로 사용된다.
병렬이란, 시스템 적으로 물리적인 스레드에서 실제 동시에 일을 하는 개념이다.. 라고 설명되는데
비동기, 동기, 직렬, 동시 이 개념들의 가장 상위에 있는 느낌? 이려나
그래서 동시와 병렬의 차이를 찾아보았다.
이 글이 가장 와 닿은 설명이었다.
이해가 쉽게 단순히 정리해 보면!
싱글 코어에서 멀티 스레드를 동작 시키는 방식이 동시
멀티 코어에서 멀티 스레드를 동작시키는 방식이 병렬
=>
싱글 스레드 두 개가 나란히 비동기적으로 task를 처리 하고 있다고 하면 동시성을 만족하지만 병렬로 처리 되는 것은 아니다.
싱글 스레드 하나씩 각 하나의 코어 안에서 task를 처리 하고 있다고 하면 동시에 두 개의 코어에서 각 스레드의 task를 처리 하고 있으므로 동시성과 병렬성을 모두 만족한다.
그래서 우리는 병렬이 아닌 직렬과 동시에 대한 개념들을 접했던 것.
뭔가 비동기랑 동시랑 차이를 잘 모르고 지냈는데
병렬과 동시의 차이를 이해하고 나니 이 두개는 너무나 당연히 다른 것이었다.
'iOS > iOS' 카테고리의 다른 글
동시성 프로그래밍 (3) - GCD/Operation에 앞서 (0) | 2024.08.09 |
---|---|
동시성 프로그래밍 (2) - GCD/Operation에 앞서 (0) | 2024.07.24 |
네이버 로그인 연동 - 3 / 3 (0) | 2024.04.08 |
네이버 로그인 연동 - 2 / 3 (0) | 2024.04.08 |
네이버 로그인 연동 - 1 / 3 (0) | 2024.04.08 |
댓글