멀티쓰레드 프로그래밍 개념

Jin Hur·2022년 5월 14일
0

reference: "전문가를 위한 C++" / 마크 그레고리

멀티쓰레드 프로그래밍

멀티쓰레드 프로그래밍을 이용하면 시스템에 있는 여러 프로세서 유닛을 병렬(parallel)로 사용하는 프로그램을 작성할 수 있다. 시스템에 프로세서 유닛이 장착되는 방식은 다양한데, 독립적인 CPU를 담은 프로세서 칩이 여러 개 있을 수 있고, 한 프로세서 칩 안에 코어(core)라 부르는 독립적인 CPU가 여러 개 있을 수 있다. 또 어떤 시스템은 두 가지 방식을 혼합하기도 한다. 이렇게 프로세서 유닛이 여러 개 달린 프로세서를 멀티코어 프로세서라 부른다.

멀티쓰레드 애플리케이션은 플랫폼이나 OS에서 제공하는 API에 상당히 의존적이다. 즉 멀티쓰레드 프로그래밍 코드를 플랫폼 독립적으로 작성하기는 힘들다. C++11부터 제공되는 표준 쓰레딩 라이브러리 <thread>를 활용하면 이러한 문제를 어느정도 해결할 수 있다.

C++98/03 버전은 멀티쓰레드 프로그래밍을 지원하지 않았다. 써드파티 라이브러리나 타깃 시스템의 OS에서 제공하는 멀티쓰레드 API(시스템 콜)을 활용할 수 밖에 없었다. C++11부터 표준 멀티쓰레드 라이브러리가 추가되면서 '크로스 플랫폼' 멀티쓰레드 프로그램을 작성하기 쉬워졌다.


멀티쓰레드 프로그래밍이 필요한 이유

source: https://velog.io/@yeunjoo121/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-thread

멀티쓰레드 프로그래밍이 필요한 이유는 크게 두 가지이다.

  1. 병렬 연산
    ex) Map-Reduce
    주어진 연산 작업을 작은 문제들로 나눠서 각각을 멀티프로세서 시스템에서 병렬로 실행하면 전반적인 성능을 크게 높일 수 있다.

  2. 모듈화
    연산을 다른 관점에서 모듈화할 수 있다. 예를 들어 연산을 UI 쓰레드에 종속적이지 않은 독립 쓰레드로 분리해서 구현하면 처리 시간이 긴 연산을 백그라운드로 실행시키는 방식으로 UI의 응답 속도를 높일 수 있다.

0개의 댓글