프로그래밍을 하다보면 동시성 처리를 할 경우가 있다.
여기서 동시성과 병렬성을 헷갈릴 수 있는데 오늘 둘의 개념과 차이를 정리해보자.
동시성은 하나의 시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 하는 것이다.
실질적으로는 한번에 하나의 작업만을 처리한다.
병렬성은 여러 작업을 실제로 동시에 처리하는 것이다.
여러 CPU 또는 코어를 사용하여 여러 작업을 병렬로 처리할 수 있다. 예를 들어, 대용량 데이터 처리나 과학 계산 분야에서 여러 계산 작업을 병렬로 처리할 수 있다.
병렬로 처리할 작업들은 병렬처리기에서 실행되며, 각각의 작업은 별도의 프로세스나 스레드에서 실행된다. 이러한 병렬처리기는 여러 개의 CPU 또는 CPU 코어가 있어서, 각각의 작업이 서로 다른 CPU 또는 CPU 코어에서 병렬적으로 실행된다.
병렬성은 멀티코어 컴퓨터에서 많이 사용되며, 실행 시간을 줄이거나 처리량을 늘리는 데에 사용된다.
예를 들어, 병렬처리를 사용하여 이미지나 비디오를 인코딩하거나, 대규모 데이터를 처리하는 등의 작업을 효율적으로 처리할 수 있다.
병렬성과 동시성은 비슷해 보이지만 완전히 다른 개념이다. 병렬성은 여러 작업이 동시에 실행되는 것이지만, 이러한 작업들은 각각이 독립적으로 실행되며 서로 영향을 주지 않는다. 반면에 동시성은 서로 다른 작업들이 서로 영향을 주면서 동시에 실행되는 것처럼 보인다.
아직 개념이 좀 어렵다면 한 가지 예시로 살펴보자.
위의 그림은 하나의 커피머신을 사용하는데 손님들이 2줄로 줄을 서있는다고 가정해보자. 이 때 두 줄이 번갈아가며 커피를 받는게 동시성에 해당하는 개념이다.
두 번째 그림은 두개의 커피머신을 사용하여 각각 한줄씩 손님을 받는것이다. 이게 병렬성의 개념이다.