- callable object(함수, 함수객체, 람다 등)을 비동기 호출 할 수 있도록 래퍼를 만드는 도구.
- promise를 사용하는것과 유사한 방식이지만, 함수에서 인자값으로 promise를 받지 않아도 된다.
- 사실 async를 더욱 많이 사용한다.
int add(int a, int b)
{
std::cout << "add" << std::endl;
return a + b;
}
int main()
{
std::packaged_task<int(int, int)> task(add);
std::future<int> ft = task.get_future();
// Non threading.
task(10, 20); // add(10, 20) (리턴값을 받으려면 future를 이용해야 한다.)
// to other thread.
std::thread t(std::move(task), 10, 20);
std::cout << "continue main" << std::endl;
int ret = ft.get();
std::cout << ret << std::endl;
t.join();
}