Concurrency(동시성)는 CPU 가용성 극대화 위해 Parallelism 의 단점 및 어려움을 소프트웨어(구현)레벨에서 해결하기 위한 방법이다.
1개의 코어는 한번에 한가지의 작업만 처리 할 수 있다. 이때 1개 Core에서 시분할을 통해 2개 이상의 작업을 번갈아가며 처리하는 방식을 동시성 처리라고 한다.
위 그림처럼 동시 작업에 있어서 일정양 처리 후 다음 작업으로 넘기는 방식인데 Task1을 처리하다가 처리 내용을 변경해서 Task2를 처리하는 과정을 작업이 끝날 때 가지 번갈아 반복한다. 이 과정을 시분할이라고 한다.
시분할은 Task 끼리 제어권을 주고 받으며 작업을 처리해나가는 패턴으로 병렬적으로 처리하진 않으나 유사하게 처리한다.
기준 | Concurrency(동시성) | Parallelism(병렬성) |
---|---|---|
구현 | 논리적 | 물리적 |
동시 실행 | 논리적 패턴 | 물리적 동시 실행 |
코어 | 싱글 코어 + 멀티 코어 | 멀티 코어 |
작업 처리 | 한 개의 작업 공유 처리 | 별개의 작업 처리 |
디버깅 난이도 | 매우 어려움 | 어려움 |