Programming/C++

[C++] Thread(쓰레드)

1code 2021. 12. 7. 19:21
728x90

Thread(쓰레드)

프로세스(Process) 실행의 단위로 정의할 수 있다.

하나의 프로세스는 1개이상의 Thread로 구성되어있고, Thread는 프로세스의 메모리와 자원을 서로 공유한다.

그리고, 각각의 Thread 마다 registers와 stack을 소유하고 있다.

그림으로 표현하면 아래처럼 표현이 가능하다.

Thread

 

1. Thread 사용의 장점

  • 자원의 효율성 증대
  • 처리 비용 감소
  • 프로그램 응답시간 단축(간단한 통신방법)
    • 프로세스 내에서 메모리 영역을 공유하고, 힙영역을 공유하고 있으므로 데이터를 주고받기 편하고, 통신 비용이 적다.

2. Thread 사용의 문제점

  • 자원을 서로 공유하고 있어서 병목현상 또는 데드락 등 동기화 문제가 발생할 수 있다.
  • 설계가 어렵고 디버깅이 힘들다.
  • 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 끼친다.
    • 그렇다고 해서 하나의 단일 스레드를 사용하면 기대하는 효과만큼의 성능을 나타내지는 않는다.
728x90