02_Thread

02_Thread

날짜
생성자
ShalomShalom
카테고리
pararell
작성일
2023년 05월 03일
태그
c++
이전 블로그
win 에서는 `windows.h`에서 제공하는 `CreateThread()`하였으나.
c++11부터 표준인 `thread.h`의 `thread`를 통해 만들 수 있다.
💡
표준을 이용하면 좋은게 윈도우즈와 리눅스 둘다 해당 코드를 사용할 수 있게 된다는 장점이 있다.

예제 코드

#include <thread> void hello_thread() { cout << "Hello thread" << endl; } int main() { std::thread t(hello_thread); // 스레드 생성 cout << "Hello Main" << endl; if (t.joinable()) t.join(); //스레드 종료시까지 대기 }
 
대기가 없으면 생성한 스레드가 종료 전에 프로그램이 끝나므로 에러가 난다.

분석

notion image
 
위 사진을 보면 HelloThread에 중단점이 걸렸지만 Hello Main이 출력된 것을 볼 수 있다.
notion image
 
위 사진을 보면 여러개의 스레드가 생성이 될 수있다.

기타 api

auto thread_count =  t.hardware_concurrency(); // CPU의 개수 auto id =  t.get_id(); // 쓰레드만의 고유한 id t.detach(); // 백그라운드 스레드로 전환 시켜 준다. detach 상태라고도 함 t.joinable();// detach된 쓰레드가 join이 될 수 있는지 체크함 t.join(); // 스레드가 끝날 수 있는지 체크
 

댓글

guest