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()이 끝나지않으면 기다려줌.