[c++] C++에서의 스레드 생성

C++는 다중 스레드를 지원하는 강력한 언어입니다. C++11 이후 버전에서는 표준 라이브러리에 스레드를 다루기 위한 기능이 추가되었습니다. 스레드를 생성하고 다루는 방법을 알아보겠습니다.

std::thread 클래스 사용하기

C++11 표준 라이브러리에는 스레드를 다루기 위한 std::thread 클래스가 포함되어 있습니다. 이 클래스를 사용하여 스레드를 생성하고 실행할 수 있습니다.

다음은 std::thread를 사용하여 간단한 예제 스레드를 만드는 코드입니다.

#include <iostream>
#include <thread>

void threadFunction() {
    // 스레드에서 실행되는 코드
    std::cout << "This is a thread function" << std::endl;
}

int main() {
    // 스레드 생성
    std::thread t(threadFunction);
    
    // 메인 쓰레드와 새로 생성된 스레드를 병행해서 실행
    // ...

    // 스레드가 끝나길 기다림
    t.join();

    return 0;
}

std::thread 생성자를 통해 스레드 함수(threadFunction)를 전달하여 새로운 스레드를 생성합니다. 이후 join 함수를 사용하여 메인 스레드가 새로운 스레드가 종료될 때까지 대기하도록 할 수 있습니다.

스레드 생성 시 인수 전달하기

스레드를 생성할 때 인수를 전달할 수도 있습니다.

#include <iostream>
#include <thread>

void threadFunction(int n) {
    std::cout << "This is thread function with argument: " << n << std::endl;
}

int main() {
    int arg = 5;
    std::thread t(threadFunction, arg);
    t.join();

    return 0;
}

위의 예시에서 threadFunction은 정수형 인수를 받아들이도록 정의되어 있습니다. std::thread의 생성자에서 해당 인수를 전달하여 스레드를 생성하고 실행해볼 수 있습니다.

결론

이제 C++에서의 스레드 생성에 대해 간단히 알아보았습니다. std::thread 클래스를 사용하여 스레드를 생성하고 제어할 수 있으며, 필요한 경우 인수도 전달할 수 있습니다. C++를 이용하여 다중 스레드를 다루는 데에는 이처럼 표준 라이브러리를 이용하는 방법 외에도 다양한 방법이 있으니 필요에 따라 적절히 선택하여 사용하시면 됩니다.