프로그래밍/시스템 프로그래밍
멀티 쓰레드
오늘의논리
2024. 3. 3. 19:50
728x90
C++에서 멀티스레드는 동시에 여러 작업을 수행할 수 있게 해주는 기능이다. 각 스레드는 독립적인 실행 흐름을 가지며, 별도의 스택을 가진다. 이를 통해 프로그램의 성능을 향상시킬 수 있다. 쉽게 말해 그림판, 메모장 등 여러 프로그램을 켰을때 그 프로그램들에 쓰레드들이 배치되어 동시에 작동하게 해준다. 이때 이 쓰레드를 작동시키는 것은 CPU 의 코어 이다.
멀티스레드 프로그래밍의 핵심 개념
- 스레드(Thread): 운영체제로부터 자원을 할당받은 작업의 단위
- 프로세스(Process): 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- 멀티스레딩(Multi-Threading): 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고, 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것
멀티스레드 프로그래밍의 장점
- 응답성: 프로그램의 일부분이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속되어 사용자에 대한 응답성이 증가
- 경제성: 프로세스 내 자원들과 메모리를 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어듬
- 멀티프로세서 활용: 다중 CPU 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있으므로 병렬성이 증가함
그러나 멀티스레드 프로그래밍에는 주의해야 할 점도 있다. 스레드 간에 데이터를 공유하므로, 한 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있습니다. 따라서 동기화가 필요하다.
728x90