- C++에서 멀티스레드를 활용한 간단한 콘솔 프로그램 예제
이번 포스팅에서는 C++에서 멀티스레드를 활용한 간단한 콘솔 프로그램을 작성해보겠습니다. 이 프로그램은 사용자가 Enter 키를 누르면 스레드가 실행되고, ESC 키를 누르면 스레드가 종료되는 기능을 구현합니다.
- MyThread 클래스 구현
먼저, MyThread 클래스를 살펴보겠습니다. 이 클래스는 스레드가 실행되는 동안 "Runing..." 메시지를 매초 출력하다가, Stop 메서드가 호출되면 종료됩니다.
// MyThread.h
#pragma once
#include <iostream>
#include <thread>
#include <conio.h> // _getch()
using namespace std;
class MyThread
{
public:
MyThread();
~MyThread();
public:
void Update();
void Stop();
private:
bool Runing;
};
// Mythread.cpp
#include "MyThread.h"
MyThread::MyThread()
{
Runing = true;
}
MyThread::~MyThread()
{
}
void MyThread::Update()
{
while (Runing)
{
cout << "Runing . . ." << endl;
this_thread::sleep_for(chrono::milliseconds(1000)); // Run delay
}
}
void MyThread::Stop()
{
cout << "Thread process Exit" << endl;
Runing = false;
}
- main 함수 구현
이제 main 함수에서 MyThread 클래스를 활용하여 스레드를 제어하는 로직을 작성해보겠습니다.
// main.cpp
#include "MyThread.h"
int main()
{
MyThread* mythread = new MyThread();
cout << "Start \"Enter\" Key" << endl;
cout << "Stop \"Esc\" Key" << endl;
while (_getch() != 13); // Enter key
thread loopThread([&mythread] {
mythread->Update();
});
while (_getch() != 27); // ESC key
mythread->Stop();
loopThread.join();
delete mythread;
cout << "main process Exit" << endl;
return 0;
}
- 프로그램이 시작되면, 먼저 사용자가 Enter 키를 누를 때까지 대기합니다.
- Enter 키를 누르면 Update 메서드를 실행하는 스레드가 시작됩니다.
- 사용자가 ESC 키를 누를 때까지 스레드는 계속 실행되며, ESC 키가 입력되면 스레드가 종료됩니다.
- 스레드가 종료되면 메모리 관리를 위해 mythread 객체를 삭제합니다.
Github
https://github.com/Jedragon-e/ThreadDemo
GitHub - Jedragon-e/ThreadDemo
Contribute to Jedragon-e/ThreadDemo development by creating an account on GitHub.
github.com
이번 포스팅에서는 C++에서 멀티스레드를 사용하여 간단한 스레드 제어 프로그램을 구현해보았습니다. 이 프로그램은 스레드를 시작하고 종료하는 기본적인 방법을 이해하는 데 도움을 줄 수 있습니다.
std::thread
를 사용하여 멀티스레드를 간단히 구현할 수 있으며, 스레드의 생명 주기를 관리하는 방법을 학습할 수 있습니다. 이 코드를 바탕으로 더 복잡한 스레드 기반 애플리케이션을 개발할 수 있을 것입니다.