: 프로세스의 실행 가능한 가장 작은 단위
프로세스는 여러 스레드를 가질 수 O
: 프로세스에서 프로세스는 하나의 스레드를 포함한다.
1. 문맥 교환 (context switch) 작업을 요구하지 X
2. 자원 접근에 대한 동기화를 신경 쓰지 X
모든 스레드가 동시에 같은 자원에 접근하거나 동일한 적업을 실행하려는 경우 에러를 발생시키거나 원하는 값이 나오지 않을 수 있기 때문
3. 단순히 CPU 만을 사용하는 계산 작업이라면, 더 효율적
하지만, 스레드 간의 작업 전환(context switching)에 소요되는 시간 때문에 두 개의 스레드로 작업한 시간이 때로는 하나의 스레드로 작업한 시간보다 더 오래 걸릴 수 O
4. 프로그래밍 난이도 easy / CPU, 메모리 적게 사용 ➡️ 비용 少
1. 여러 개의 CPU를 활용 X
2. 연산량이 많은 작업을 하는 경우, 완료된 후에야 다른 작업 수행할 수 O
3. 에러 처리를 못하는 경우 STOP
: CPU 의 최대 활용을 위해 두 개 이상의 스레드가 동시에 실행되는 기술
1. 응답성 高
2. 경제성이 좋다.
1. context switching, 동기화 등의 이유로 싱글 코어 멀티 스레딩은 스레드 생성 시간이 단일 스레드보다 느리다.
2. 공유하는 자원에 동시에 접근할 경우, 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 의도하지 않은 값을 읽어오거나 수정할 수 O ➡️ 동기화 필요
프로세스와 달리 스레드는 데이터오 힙 영역을 공유하기 때문에
3. 운영체제의 지원 필요
4. 프로그래밍 난이도가 高 / 자원 사용 多
: 싱글 코어에서 멀티 스레드를 동작시키기 위한 방식
: 멀티 코어에서 멀티 스레드를 동작시키는 방식
gil0127.log : 싱글스레드(Single thread) vs 멀티스레드 (Multi thread)
jisoolee11.log : 스레드와 동시성