728x90
C++에서 스레드를 생성하는 방법은 주로 std::thread 클래스를 사용하는 것입니다. C++11부터 제공되는 이 클래스는 스레드를 쉽게 생성하고 관리할 수 있게 해줍니다. 스레드를 생성하는 기본적인 방법은 다음과 같습니다.
스레드 생성 방법
- 함수 포인터를 사용한 스레드 생성: 기본적인 스레드 생성 방법은 실행할 함수를 포인터로 전달하는 것입니다.
#include <iostream> #include <thread> void threadFunction() { std::cout << "스레드가 실행 중입니다." << std::endl; } int main() { std::thread t(threadFunction); // 스레드 생성 t.join(); // 메인 스레드가 t 스레드가 종료될 때까지 대기 return 0; }
- 람다 함수를 사용한 스레드 생성: C++11에서는 람다 함수를 사용하여 스레드를 생성할 수도 있습니다.
#include <iostream> #include <thread> int main() { std::thread t([]() { std::cout << "람다 스레드가 실행 중입니다." << std::endl; }); t.join(); // 메인 스레드가 t 스레드가 종료될 때까지 대기 return 0; }
- 클래스 멤버 함수를 사용한 스레드 생성: 클래스의 멤버 함수를 스레드로 실행할 때는 객체를 인자로 전달해야 합니다.
-
cpp
#include <iostream> #include <thread> class MyClass { public: void memberFunction() { std::cout << "클래스 멤버 스레드가 실행 중입니다." << std::endl; } }; int main() { MyClass obj; std::thread t(&MyClass::memberFunction, &obj); // 멤버 함수와 객체를 인자로 전달 t.join(); // 메인 스레드가 t 스레드가 종료될 때까지 대기 return 0; }
스레드 생성 시 주의사항
- join() 또는 detach() 호출: 생성된 스레드는 반드시 join() 또는 detach() 메서드를 호출하여 종료를 관리해야 합니다. 그렇지 않으면 프로그램이 비정상적으로 종료될 수 있습니다.
- 스레드 안전성: 여러 스레드가 공유 자원에 접근할 경우, 데이터 경합을 피하기 위해 적절한 동기화 방법(예: std::mutex)을 사용해야 합니다.
728x90
'반도체 > C++' 카테고리의 다른 글
32. C++에서의 객체지향 (0) | 2024.08.30 |
---|---|
31. C++에서 메모리 관리의 중요성과 힙(heap)과 스택(stack)의 차이 (0) | 2024.08.30 |
29. C++의 스레드 개념 (0) | 2024.08.30 |
28. C++에서 사용하는 함수들 (1) | 2024.08.20 |
27. C++열거형 (1) | 2024.08.20 |