오늘의논리 2024. 3. 3. 19:50
728x90

C++에서 멀티스레드는 동시에 여러 작업을 수행할 수 있게 해주는 기능이다. 각 스레드는 독립적인 실행 흐름을 가지며, 별도의 스택을 가진다. 이를 통해 프로그램의 성능을 향상시킬 수 있다. 쉽게 말해 그림판, 메모장 여러 프로그램을 켰을때 프로그램들에 쓰레드들이 배치되어 동시에 작동하게 해준다. 이때 쓰레드를 작동시키는 것은 CPU 코어 이다.

멀티스레드 프로그래밍의 핵심 개념

  • 스레드(Thread): 운영체제로부터 자원을 할당받은 작업의 단위
  • 프로세스(Process): 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • 멀티스레딩(Multi-Threading): 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고, 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것

멀티스레드 프로그래밍의 장점

  • 응답성: 프로그램의 일부분이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속되어 사용자에 대한 응답성이 증가
  • 경제성: 프로세스 내 자원들과 메모리를 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어듬
  • 멀티프로세서 활용: 다중 CPU 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있으므로 병렬성이 증가함

그러나 멀티스레드 프로그래밍에는 주의해야 할 점도 있다. 스레드 간에 데이터를 공유하므로, 한 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있습니다. 따라서 동기화가 필요하다.

728x90