WN_인생기록

thread 본문

C++/탐구

thread

WhNi 2024. 3. 30. 00:13

맨날 나중에 배워야지 하고 넘어갔던 부분이다. 

 

정의는 프로그램내에서 동시에 실행될 수 있는 실행 단위를 뜻한다. 

 

멀티 스레드란 하나의 프로세스 안에서 여러 스레드를 생성하여 병렬로 작업을 처리할 수 있게 하는 기능이다. 

 

#include <iostream>
#include <thread>

using namespace std;

void makelog()
{
	cout << "log play" << "\n";
}

// single thread
// 하나의 프로세스

// 그런데 여기에 추가적으로 스레드를 추가해서 병렬로 일 처리가 가능함
// 하나의 채널이 새로 생긴다고 생각해도 괜찮을듯
// 그런데 프로세스에서 공유하고 있는건 code 와 data 같은 부분들은 공유됨.
// 예시로 log 같은걸 중간에 넣고 싶은데, 같은 thread 에서 추가하게되면 일처리가 멈추고 log을 출력하니까
// log를 넣어주는 다른 thread를 넣으면 좀더 빠르게 리소스를 활용하는 셈임
int main()
{
	cout << "Process Start" << "\n";

	int a = 3;
	int b = 1;

	int c = a * b;

	thread t1(makelog);
	thread t2 (makelog);
	// 람다 함수도 스레드 처리가 가능함
	thread t3([]
		{
			cout << "log play?" << "\n";
		});

	t1.join();
	t2.join();
	t3.join();
	// 스레드의 순서는 프로세스에 따라서 달라짐. 명시적으로 순서를 적용하고싶으면 다른 방법을 써야함
	cout << "Process End" << "\n";

}

 

'C++ > 탐구' 카테고리의 다른 글

A* Algorithm -4 (완)  (0) 2024.04.01
A* Algorithm -3  (0) 2024.04.01
Lvalue? Rvalue?  (0) 2024.03.24
While  (0) 2024.03.20
Reference  (0) 2024.03.20