[c++] C++에서의 스레드 분리
C++에서 스레드를 사용하여 병렬 처리를 수행하는 방법을 알아봅시다.
1. std::thread
를 사용하여 스레드 생성
C++11부터 제공되는 std::thread
라이브러리를 사용하여 새로운 스레드를 만들 수 있습니다.
#include <iostream>
#include <thread>
void threadFunction() {
// 스레드에서 수행될 작업
std::cout << "Thread is running" << std::endl;
}
int main() {
// 새로운 스레드 생성
std::thread myThread(threadFunction);
// 메인 스레드와 새로운 스레드의 작업을 병렬로 수행
std::cout << "Main thread is running" << std::endl;
// 새로운 스레드가 종료될 때까지 대기
myThread.join();
return 0;
}
2. 스레드 분리
std::thread
를 사용하여 생성된 스레드를 분리할 수 있습니다. 분리된 스레드는 메인 스레드와 별도로 동작하며, 메인 스레드가 종료되어도 독립적으로 실행됩니다.
#include <iostream>
#include <thread>
void threadFunction() {
// 스레드에서 수행될 작업
std::cout << "Thread is running" << std::endl;
}
int main() {
// 새로운 스레드 생성
std::thread myThread(threadFunction);
// 스레드를 분리하여 독립적으로 실행
myThread.detach();
// 메인 스레드가 종료되어도 분리된 스레드는 계속 실행됨
std::this_thread::sleep_for(std::chrono::seconds(1));
return 0;
}
결론
C++에서는 std::thread
를 사용하여 스레드를 생성하고, 작업을 병렬로 수행할 수 있습니다. 또한 detach
함수를 사용하여 생성된 스레드를 분리할 수 있으므로, 병렬 처리를 보다 유연하게 조절할 수 있습니다.
참고 자료:
- https://en.cppreference.com/w/cpp/thread/thread
- https://en.cppreference.com/w/cpp/thread/thread/detach