C++11 ---std::packaged_task

std::packaged_task 是 C++11 中的一个类模板,用于封装可调用对象,同时可以关联一个 std::future 对象,以便获取异步操作的结果。

以下是一个简单的示例代码,演示如何使用 std::packaged_task 来获取 future 对象:

#include 
#include 
#include 

int async_function() {
    // 模拟一个耗时的计算任务
    std::this_thread::sleep_for(std::chrono::seconds(2));
    int result = 42;
    return result;
}

int main() {
    // 创建一个 packaged_task,关联 async_function
    std::packaged_task task(async_function);

    // 获取与 packaged_task 关联的 future 对象
    std::future futureObj = task.get_future();

    // 在另一个线程中执行任务
    std::thread threadObj(std::move(task));
    threadObj.detach();

    // 等待并获取 future 中的结果
    int result = futureObj.get();

    std::cout << "异步计算结果为:" << result << std::endl;

    return 0;
}

在上面的示例中,async_function 是一个模拟的耗时计算任务,通过返回结果来提供计算结果。我们创建了一个 std::packaged_task 对象,并将 async_function 关联到它上面。然后,通过调用 get_future() 函数获取与 packaged_task 关联的 future 对象。最后,在另一个线程中执行任务,并使用 futureObj.get() 方法来等待并获取 future 中的结果。

请注意,这个示例是一个简化版的例子,你需要根据实际情况进行适当修改和扩展。

你可能感兴趣的:(C++,示例代码,C++11,相关,c++,开发语言)