文档目录

目前 enqueue(f) 无法获取返回值。如果任务返回一个 int,调用者想知道结果:

int compute(int x) { return x * x; }

pool.enqueue([&] {
    int result = compute(42);
    // 怎么把 result 传给调用者?
});

解决方案:std::packaged_task + std::future。

std::packaged_task<R()> 包装一个可调用对象,它关联一个 std::future<R>。当你执行 packaged_task 时,结果被存入关联的 future,调用者通过 future.get() 获取。