스레드와 멀티스레딩

Thread

  • 한 프로세스 안에서도 여러 작업이 동시에 필요할 경우 가 있다.

  • 프로세스 내 작업의 흐

ex) 유튜브 영상을 다운받으면서 실행, 게임 받으면서 패치노트 확인

  • 프로세스는 자원을 공유하지 않지만, 쓰레드는 프로세스마다 주어진 전체 자원을 공유한다

  • 속도와 효율에서 자원공유는 장점이지만, 시간문제로 발생하는 Error 발생 확률이 높다.

  • 코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와 달리 스레드는 코드, 데이터, 힙은 스레드 끼리 서로 공유한다.

멀티 스레드

하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것

스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌

장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 전역 변수와 정적 변수에 대한 자료 공유 가능

단점 : 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)

  • 멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함

    하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정

    상호 배제, 진행, 한정된 대기를 충족해야함

Last updated