프로그래밍/c++

[c++] Thread를 이용한 비동기 프로그래밍

rrruu 2020. 9. 17. 09:11
반응형

thread 란 그냥 간단하게 백그라운드에서 실행될 프로그램 하나를

만든다고 이해하면 쉽게 이해가 될 것이다.

 

일단 thread를 사용하기 위해선

#include<thread>

이렇게 thread를 include 해주어야 한다.

 

사용방법은 thread(백그라운드에서 돌릴 함수이름) 이렇게 사용한다.

join 함수는 thread가 종료 될 때까지 아래 코드를 실행 시키지 않고 기다리게 만든다.

thread tr(함수이름); //선언시
tr.join(); //thread 종료 까지 대기

 

아래는 간단한 예제이다.

#include <iostream>
#include <thread>
#include <Windows.h>

using namespace std;

void untr_for();
void tr_for();

int main()
{
	thread tr(tr_for);

	untr_for();
	tr.join();
	
	return 0;
}

void tr_for()
{
	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
		Sleep(100);
	}
	return;
}

void untr_for()
{
	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
		Sleep(100);
	}
	return;
}

 

위의 코드를 실행하면 일반적인 동기 프로그램이였으면

0~9까지 순차적으로 프린트가 찍힌 후에 다시 0~9까지 프린트가 되지만

tread를 사용해서 00,11,22 이런 식으로 동시에 찍히는 것을 확인 할 수 있다.

 

반응형