728x90
C++에서 스레드는 프로그램 내에서 동시에 실행되는 경량 프로세스를 의미합니다. 스레드를 사용하면 여러 작업을 병렬로 수행할 수 있어 프로그램의 성능을 향상시킬 수 있습니다. C++11부터는 <thread> 헤더를 통해 스레드를 쉽게 사용할 수 있는 기능이 추가되었습니다.
기본 개념
- 스레드 생성: std::thread 클래스를 사용하여 새로운 스레드를 생성할 수 있습니다. 스레드를 생성할 때 실행할 함수를 인자로 전달합니다.
#include <iostream> #include <thread> void threadFunction() { std::cout << "스레드가 실행 중입니다." << std::endl; } int main() { std::thread t(threadFunction); // 스레드 생성 t.join(); // 메인 스레드가 새로 생성한 스레드가 끝날 때까지 대기 return 0; }
- 스레드 동기화: 여러 스레드가 공유 자원에 접근할 때 데이터 경합이 발생할 수 있습니다. 이를 방지하기 위해 std::mutex를 사용할 수 있습니다.
#include <iostream> #include <thread> #include <mutex> std::mutex mtx; // 뮤텍스 객체 int sharedResource = 0; void increment() { mtx.lock(); // 뮤텍스 잠금 ++sharedResource; mtx.unlock(); // 뮤텍스 해제 } int main() { std::thread t1(increment); std::thread t2(increment); t1.join(); t2.join(); std::cout << "공유 자원 값: " << sharedResource << std::endl; return 0; }
- 스레드 종료: 스레드가 실행을 마치면 join() 메서드를 사용하여 메인 스레드가 종료될 때까지 기다리게 할 수 있습니다. detach()를 사용하면 스레드를 독립적으로 실행할 수 있지만, 이 경우 스레드가 종료될 때까지 메인 스레드가 대기하지 않습니다.
- 스레드 안전성: 멀티스레딩 환경에서 프로그램이 안전하게 동작하도록 하기 위해 스레드 안전성을 고려해야 합니다. 이는 데이터를 보호하는 방법(뮤텍스, 세마포어 등)과 관련이 있습니다.
728x90
'반도체 > C++' 카테고리의 다른 글
31. C++에서 메모리 관리의 중요성과 힙(heap)과 스택(stack)의 차이 (0) | 2024.08.30 |
---|---|
30. C++ 스레드 생성 방법 (0) | 2024.08.30 |
28. C++에서 사용하는 함수들 (1) | 2024.08.20 |
27. C++열거형 (1) | 2024.08.20 |
26. 연산자,조건문,반복문 (1) | 2024.08.14 |