주 스레드 종료시

참조형 인자 보낼때 주의점

void f(int a, int& b, std::string&& s) { b = 100; }

int main()
{
	int n = 0;
	std::string s = "hello";
	
	// 쓰레드로 참조형 인자를 넘길때는 n을 그냥 넘기면 안되고, std::ref로 감싸서 보낸다.
	std::thread t(&f, 10, std::ref(n), std::move(s) );
}

멤버 함수

// "hardware_concurrency": CPU가 지원하는 thread 개수 (static 함수)

// "get_id": thread ID 반환. (= std::this_thread::get_id())

// "native_handle": OS의 스레드 핸들 반환 (우선순위 같은거 바꾸고 싶을때 사용)
std::thread t( [](){} );
auto handle = t.native_handle();
SetThreadPriority(handle, THREAD_PRIORITY_TIME_CRITICAL);

// "swap": 스레드 Object swap (스레드 각각이 실행시킬 함수를 바꿀 수 있다)
std::thread t1( [](){ printf("Thread1"); } );
std::thread t2( [](){ printf("Thread2"); } );
t1.swap(t2);
// t1은 Thread2를, t2는 Thread1을 호출하게 된다.
t1.join();
t2.join();

// 이동 연산도 가능.
std::thread t4 = std::move(t1);