기어가더라도 제대로
0. 동시성 프로그래밍의 필요성 본문
필요성
동시성이 없다면 버벅일 수 있다.
동시성이 있다면 버벅이지 않는다.
-> 성능, 반응성 은 최적화
스레드는 무엇이고, 코어는 무엇인가?
- CPU core
- 싱글 코어는 한번에 하나의 일만 할 수 있다.
- 프로세스 중에 전환이 아주 빨라 사람이 보기엔 동시에 작업되는 것처럼 보임
- 2004년도에 클럭의 한계 상한에 도달했다.
- 싱글코어는 더이상 발전이 어렵다.
- 멀티 코어 체제로 가자
- 코어 끼리의 통신이 중요 포인트
스레드
- 4코어 8 스레드는 뭔가요?
- 여기서 용어 정리가 필요한데,
- 제조사에서 말하는 스레드
- 소프트웨어 적인 스레드
- 이 둘이 다르다.
하이퍼 스레딩(2002)
- 하나의 코어를 두개의 스레드로 용도를 나누어서 마치 물리적인 두개의 코어가 있는 것처럼 보이게 하는 기술
- OS 조차도 CPU가 2개로 보인다.
변천사
- 1코어 2스레드
- 2코어 2스레드
- 4코어 8스레드
- 6코어 12스레드
요약
- 코어
- 물리적인 CPU의 프로세서
- 일을 하는 녀석
- 스레드
- 실제로는 하나의 코어지만, 두개의 코어 처럼 보여지는 논리적인 CPU
- 하이퍼 스레딩(Intel), SMT(AMD)
버벅였던 이유를 자세하게
- 싱글 스레드 환경
- 단순히 `print()` 정도의 작업은 그렇게 많은 자원을 소모하지 않아서 여러번 실행하더라도 버벅이지 않음
- 이미지 가져오는 작업같은 경우
- 1. 압축파일 다운로드
- 2. 압축을 풀고
- 3. 이미지 파일을 변형(블러처리)
- 4. 셀에 이미지 표시
- 총 네단계로 구성되기에 버벅여 보임
- iOS는 16ms 마다 화면을 업데이트 하는데 이 과정에서 버벅이는 것 처럼 느껴짐
어떻게 분산 시킬 수 있을까?
이것이 이 수업의 목적
- 작업을 어떻게 다른 스레드에서 동싱에 일을 수행하게 할 수 있을까?
- 작업을 대기행렬에만 보내면 된다.
- 대기열은 선입선출로 동작한다.
- 다시 반복하면, 작업을 큐로 보내자
결론
작업(Task)을 큐(Queue)로 보내자
'CS > 동시성' 카테고리의 다른 글
5. GCD 사용시 주의해야할 사항 (0) | 2022.09.26 |
---|---|
4. 디스패치 큐의 종류 (0) | 2022.09.26 |
3. 직렬과 동시 (0) | 2022.08.31 |
2. 동기(Synchronous) VS Asynchronous(비동기) (0) | 2022.08.31 |
1. GCD 와 Operation (0) | 2022.08.31 |
Comments