쓰레드(Thread)는 프로그램 내에서 실행되는 가장 작은 실행 단위입니다. 프로세스 안에서 실행되며, 프로세스의 메모리 공간(코드, 힙, 데이터)을 공유합니다. C++에서는 <thread> 라이브러리를 사용하여 멀티스레드 프로그래밍을 구현할 수 있습니다.
#include <iostream>
#include <vector>
#include <thread>
using namespace std;
#include <iostream>: 콘솔에 출력하기 위해 사용.#include <vector>: 여러 쓰레드를 관리하기 위해 벡터 컨테이너를 사용.#include <thread>: C++ 표준 쓰레드 클래스(std::thread)를 사용.using namespace std;: 표준 라이브러리 사용 시 std::를 생략.void HelloThread(int i)
{
cout << "Hello Thread " << i << endl;
}
HelloThread:i를 받아 "Hello Thread"와 함께 출력.i를 통해 고유한 값을 전달받음.int main()
{
vector<thread> threads; // 쓰레드 객체를 관리할 벡터
vector<thread>: for (int i = 0; i < 10; i++)
{
threads.push_back(thread(HelloThread, i));
}
thread(HelloThread, i):HelloThread 함수와 i 값을 매개변수로 전달하여 쓰레드 생성.threads.push_back(): cout << "Hello Main!" << endl;
Hello Main!은 메인 쓰레드에서 실행. for (thread& t : threads)
{
t.join(); // 각 쓰레드의 종료를 기다림
}
join:join()하지 않으면, 프로그램 종료 시 쓰레드가 제대로 정리되지 않아 비정상 종료될 수 있음. /* if (t.joinable()) {
t.join();
} */
joinable():join하면 런타임 오류 발생 가능. while (true)
{
}
HelloThread를 호출하며 고유한 i 값을 출력.join으로 대기.while(true)로 유지.Hello Main!
Hello Thread 0
Hello Thread 1
Hello Thread 2
Hello Thread 3
Hello Thread 4
Hello Thread 5
Hello Thread 6
Hello Thread 7
Hello Thread 8
Hello Thread 9
CPU 코어 수:
쓰레드 스케줄링:
공유 메모리 문제:
해결 방법:
적정 스레드 수:
자원 동기화:
디버깅 어려움: