Concurrent execution
I/O intensive tasks
프로그램이나 알고리즘이 동시에 수행 가능할 경우 Concurrent하다고 함
그렇다고 해서 물리적으로 병렬 수행이 될지는 어떤 하드웨어 위에서 돌아갈 지를 알아야 함
(멀티 프로세서 머신에서 돌아가야 병렬 실행된다고 말할 수 있음)
싱글 코어에서도 돌아감
컴퓨터의 자원을 Thread끼리 공유
컴퓨터의 놀고 있는 자원들을 최대한으로 사용하게
여러 작업을 수행하는 데 CPU를 많이 잡아먹지는 않지만 I/O 작업이 많을 때
Parallel execution
CPU intensive tasks
하나의 process는 여러 thread를 가질 수 있음
여러 process를 동시에 실행하는 것을 Parallel execution이라고 함
여러 작업을 수행하는 데 CPU를 많이 쓰는 일(계산량이 많은 일)
메모리를 공유하지 않기에 데이터를 넘기고 받는 데 시간이 걸릴 수 있음