MMOServer

Thread(C++)

이야기prog 2025. 3. 11. 20:41
#include "pch.h"
#include <thread>

void HelloThread() {
	cout << "Hello Thread!" << endl;
}

void HelloThread_2(int num) {
	cout << num << endl;
}
int main()
{
	//thread t(HelloThread); // Entry Point

	//int32 count = t.hardware_concurrency(); // CPU Core 개수
	//auto id = t.get_id(); 

	vector<std::thread> v;
	for (int i = 0; i < 10; ++i) {
		v.push_back(std::thread(HelloThread_2, i));
	}

	for (int i = 0; i < 10; ++i) {
		if (v[i].joinable())
			v[i].join();
	}

	//if(t.joinable()) // 쓰레드의 id가 0인지를 확인함. 0이면 detach상태나 쓰레드 객체만 있을때) std::thread t; 만 선언해놓았을 때를 생각하면 됨.
	//	t.join();
}

C++ 11부터 표준이된 <thread>를 사용해야 여러 운영체제에서 사용가능함.

<windows.h>의 ::CreateThread는 windows용이고, Linux는 또 다르다.

 

Thread.hardware_concurrency() : CPU의 논리 프로세서의 개수를 나타냄 즉 동시에 실행할 수 있는 thread 개수

Thread.joinable() : thread의 id가 0인지를 확인함. 0이면 쓰레드를 사용할 수 없다

Thread.join() : main thread가 끝나도 join()이 끝나지않으면 기다려줌.