Task기반의 쓰레드 처리(내부적으로 쓰레드 풀링 처리를 수행해주고 관리 부담을 덜어준다.)
#include <iostream>
#include <thread>
#include <future>
using namespace std;
bool TaskWork() ///< bool형의 return type
{
cout << "TaskWork begin, id : " << std::this_thread::get_id() << " \n";
std::this_thread::sleep_for(std::chrono::seconds(1));
cout << "TaskWork end\n";
return true;
}
int main(int argc, char* argv[])
{
cout << "Main threadid : " << std::this_thread::get_id() << " \n";
std::future<bool> future = std::async(std::launch::async, TaskWork);
future.wait();
cout << "future value : " << future.get() << "\n"; // 위의 "future.wait"이 없으면 future.get()에서 쓰레드가 끝날때까지 블록됨
return 0;
}
Main threadid : 0x10039d340
TaskWork begin, id : 0x70000eb57000
TaskWork end
future value : 1
댓글 없음:
댓글 쓰기