C++ 멀티스레드 프로그래밍
목록 보기
2/2
- 1. 스레드의 생성과 종료(_beginthreadex, _endthreadex 소스코드 분석)
- 2. 스레드 동기화 기초 (Mutex, Semaphore)
스레드 동기화란?#
여러 스레드가 동시에 실행될 때, 공유 자원에 대한 접근을 제어하는 것을 스레드 동기화라고 합니다.
Mutex#
Mutex(Mutual Exclusion)는 상호 배제를 의미하며, 한 번에 하나의 스레드만 임계 영역에 접근할 수 있도록 합니다.
Semaphore#
Semaphore는 동시에 접근 가능한 스레드의 개수를 제한할 수 있습니다.
예제 코드#
#include <windows.h>
#include <iostream>
HANDLE g_mutex;
DWORD WINAPI ThreadFunc(LPVOID param) {
WaitForSingleObject(g_mutex, INFINITE);
// Critical section
std::cout << "Thread " << GetCurrentThreadId() << std::endl;
ReleaseMutex(g_mutex);
return 0;
}
int main() {
g_mutex = CreateMutex(NULL, FALSE, NULL);
HANDLE threads[5];
for (int i = 0; i < 5; i++) {
threads[i] = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
}
WaitForMultipleObjects(5, threads, TRUE, INFINITE);
CloseHandle(g_mutex);
return 0;
}cpp다음 시리즈#
다음에는 더 고급 동기화 기법들을 알아보겠습니다.