반응형
예제
#include <iostream>
#include <sstream>
#include <string>
#include <thread>
using namespace std;
int main()
{
auto printMessage = [](const std::string& message)
{
std::cout << message << std::endl;
};
std::thread thread(printMessage, "Message from a child thread.");
printMessage("waiting the child thread...");
thread.join();
return 0;
}
// waiting the child thread...Message from a child thread.
쓰레드를 활용할 때 위와 같이 람다식을 사용할 수 있습니다.
std::ref()
T의 참조를 내포한 reference_wrapper 개체를 반환합니다. functional 헤더에 정의되어 있습니다.
thread를 인클루드하면, functional을 인클루드할 필요는 없습니다.
예제
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <sstream>
#include <string>
#include <thread>
#include <vector>
using namespace std;
int main()
{
std::vector<int> list(100, 1);
int result = 0;
std::thread thread([](const std::vector<int>& v, int& result)
{
for (auto item : v)
{
result += item;
}
}, list, std::ref(result));
thread.join();
std::cout << "Result : " << result << std::endl;
return 0;
}
// Result : 100
람다식을 통해, 쓰레드를 실행시키고 해당 값을 위와 같이 반환받을 수 있습니다. 이 때, std::ref() 함수를 활용합니다.
반응형
'SW > C++' 카테고리의 다른 글
C++ : mutex (뮤텍스) : 예제, 사용법, 활용 방법 (0) | 2020.03.20 |
---|---|
C++ : 쓰레드 : sleep_for(), yield() : 개념, 예제, 사용 방법 (0) | 2020.03.19 |
C++ : thread : detach, joinable : 사용법, 예제, 개념 (0) | 2020.03.17 |
C++ : thread : get_id() : 사용법, 구하는 법, 예제 (0) | 2020.03.16 |
C++ : STL : 목적, 문제점, 대체 방법 (0) | 2020.03.15 |