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(); //스레드 종료시까지 대기 }
대기가 없으면 생성한 스레드가 종료 전에 프로그램이 끝나므로 에러가 난다.
분석

위 사진을 보면 HelloThread에 중단점이 걸렸지만 Hello Main이 출력된 것을 볼 수 있다.

위 사진을 보면 여러개의 스레드가 생성이 될 수있다.
기타 api
auto thread_count = t.hardware_concurrency(); // CPU의 개수 auto id = t.get_id(); // 쓰레드만의 고유한 id t.detach(); // 백그라운드 스레드로 전환 시켜 준다. detach 상태라고도 함 t.joinable();// detach된 쓰레드가 join이 될 수 있는지 체크함 t.join(); // 스레드가 끝날 수 있는지 체크
댓글