스레드와 멀티스레딩
Last updated
Last updated
한 프로세스 안에서도 여러 작업이 동시에 필요할 경우 가 있다.
프로세스 내 작업의 흐
ex) 유튜브 영상을 다운받으면서 실행, 게임 받으면서 패치노트 확인
프로세스는 자원을 공유하지 않지만, 쓰레드는 프로세스마다 주어진 전체 자원을 공유한다
속도와 효율에서 자원공유는 장점이지만, 시간문제로 발생하는 Error 발생 확률이 높다.
코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와 달리 스레드는 코드, 데이터, 힙은 스레드 끼리 서로 공유한다.
하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌
장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능
단점 : 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)
멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함
하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정