SW/C++

C++ : thread : detach, joinable : 사용법, 예제, 개념

얇은생각 2020. 3. 17. 07:30
반응형

 

C++ thread detach, joinable

 

std::thread::detach()

쓰레드 개체에서 쓰레드를 떼어 냅니다.

떼어진 쓰레드는 메인 쓰레드와 무관하게 독립적으로 실행됩니다. 

 

 

 

std::thread::joinable()

쓰레드가 실행 중인 활성 쓰레드인지 아닌지 확인합니다.

 

 

예제

#include <iostream>
#include <sstream>
#include <string>
#include <thread>

using namespace std;

void PrintMessage(const std::string& message, int count)
{
    for (int i = 0; i < count; ++i){
        std::cout << i+1 << " : " << message << std::endl;
    }
}

int main()
{
    std::thread thread(PrintMessage, "Message from a child thread.", 10);
    
    PrintMessage("waiting the child thread...", 1);
    
    thread.detach();
    
    if (thread.joinable())
    {
        thread.join();
    }
    
    return 0;
}

 

쓰레드를 떼어내면, 쓰레드가 독립적으로 실행됩니다. 프로그램이 종료되면 떼어진 쓰레드는 동작이 멈추게 됩니다. 

반응형