여러 작업을 동시에 하고 있는 것처럼 보이게 하는 것
싱글 코어에서 멀티 쓰레드로 동작하는 방식
ex) 한 명이 커피마시면서 코딩하면서 화장실 갔다오면서 개발일지 적으면서…
동시성을 좋게 하려면 오래 걸리는 작업을 기다리지 말고 다른 작업과 동시에 실행시키면 됨
짧게 걸리는 작업도 다른 오래 걸리는 작업(I/O 가 대표적인 오래걸리는 작업)을 기다리느라 느려지는 것이므로 I/O에 묶인 작업을 처리하는 데 동시성이 유용함
동시성이 유용한 부분
코어 수보다 쓰레드가 많을 때 (즉 대부분이 해당)
실제로 여러 작업을 동시에 하고 있는 것
멀티 코어에서 멀티 쓰레드로 동작하는 방식 (코어보다 쓰레드가 더 많다면 동시성 + 병렬성)
ex) 여러 명이 한 명은 커피마시고 한 명은 코딩하고 한 명은 …
병렬성을 좋게 하려면 실제로 더 좋은 하드웨어(코어 수가 더 많은) 를 사용해야함
실행 시간의 대부분이 다른 작업을 기다리는 것이 아니라, 실제로 수행하는 데 드는 시간이므로 실제 연산량이 많아 CPU에 묶인 작업을 처리하는 데 병렬성이 유용함
병렬 처리가 유용한 부분
머신러닝, 딥러닝
컴퓨터 비전
오디오, 이미지 처리