오보에블로그

[C++] std::thread 사용법 본문

C++ & C#/C++

[C++] std::thread 사용법

(OBO) 2022. 2. 24. 17:03
728x90

스레드 란?

  • 프로세스를 실행시키는 단위, 하나의 프로세스는 여러개의 스레드(멀티 스레드)로 이루어 질 수 있으며,
  • 동일 프로세스 내에서는 메모리 자원을 공유할 수 있다.

C++ thread

  • 참고 : C++레퍼런스
  • C++11 에서 부터 thread 헤더를 통해 스레드 관련 라이브러리를 사용할 수 있다.
  • std::thread 는 싱글 스레드를 실행하는 클래스이다. 해당 클래스를 사용하면, 별도의 싱글 스레드에서 지정한 함수가 호출된다.
/*
output :
28580
thread execute!
*/
#include <thread>
#include <iostream>

using namespace std;

void func()
{
    cout << "thread execute!" << endl;
}

int main() {

    thread t1(func); // 스레드 생성
    cout << t1.get_id() << endl; // 스레드 ID 출력
    t1.join(); // 해당 스레드 실행이 끝날 때까지 대기
}
  • get_id() : 해당 스레드의 아이디 반환
  • join() : 해당 스레드 실행이 끝날 때까지 대기
  • 인자가 있는 함수를 실행시킬 때는 아래와 같이 스레드를 생성할 때 함수 명 옆에 인자로 사용할 변수를 적는다.
/*
output :
My Name is obo
*/

void func(string name)
{
    cout << "My Name is " <<  name << endl;
}

int main() {

    thread t1(func, "obo" );
    t1.join();
}
728x90