취미생활

[C++] 람다 함수로 std::thread 돌리기 본문

컴퓨터/C++

[C++] 람다 함수로 std::thread 돌리기

달다달아 2023. 3. 29. 00:15

개발 도중 처리 시간 때문에 쓰레드를 추가로 돌릴 필요가 생겼다.

 

나는 Qt, C++17 를 사용하기 때문에 QThread, pthread std::thread 등..

 

여러가지 선택지가 있었고 기존에는 주로 QThread를 통해 함수를 실행했었다.

 

하지만,

해당 프로젝트에서 QThread 를 상속받아 클래스를 새로 만들기에는 품이 너무 많이 들어가는 것 같았고

이번에는 std::thread를 사용해보기로 했다.

#include <iostream>
#include <thread>

int main() {
    // Create a lambda function that prints "Hello, World!" to the console
    auto hello = []() {
        std::cout << "Hello, World!" << std::endl;
    };

    // Create a std::thread object and pass the lambda function to its constructor
    std::thread t(hello);

    // Wait for the thread to finish executing
    t.join();
	//do something!
    return 0;
}

이 코드는 chatGPT를 통해 만든 예시 코드다.

 

기존에 내가 코딩하던 건 회사 꺼라서 못가져왔고 예시를 준비했다.

 

내용은 정말 간단한데,

 

hello 라고 하는 함수 포인터에 람다 함수를 입력시킨 뒤,

std::thread t 에서 이를 실행하는 코드다.

 

여기서 코드를 진화시킨다면 아마 std::vector 로 람다 함수 쓰레드를 여러개 사용하는 방식을 사용할 수도 있을 거고

 

아니면 쓰레드 돌려놓고 다른 내용을 처리할 수도 있을 것이다.

 

나 같은 경우에는 주석처리한 do something 부분에서 user 입력을 대기했기 때문에 유휴시간이 생겨 저런 식으로 코딩을 진행했다.

 

결과는 음...

 

아주 조금 빨라진 것 같은데

 

크게 의미는 없....

Comments