std::future和std::promise用于线程间安全传递结果,promise通过set_value设置值,future通过get获取结果并支持异常传递,适用于异步任务结果通知等场景。

在C++多线程编程中,std::future 和 std::promise 是标准库提供的用于线程间传递结果的同步机制。它们常被用来实现一个线程计算出结果后,将值安全地传递给另一个等待该结果的线程。
std::promise 是一个可写一次的对象,它用来设置某个值或异常;std::future 是与之关联的只读对象,用来获取这个值。两者通过共享状态连接,即使在不同线程中也能安全通信。
• 一个线程通过 std::promise.set_value() 设置结果下面是一个简单的例子,主线程启动子线程执行任务,并通过 future 获取其返回值:
#include <iostream>输出:
等待结果...
得到结果: 42
除了正常值,promise 还可以设置异常,让 future 在 get() 时抛出:
立即学习“C++免费学习笔记(深入)”;
void may_throw(std::promise<double>&& p) {这种机制适用于需要“将来某个时刻获取结果”的场景,比如:
• 异步任务的结果通知注意:每个 promise 只能调用一次 set_value / set_exception,多次调用会导致程序终止。
基本上就这些。配合 lambda 或包装器函数,future/promise 能灵活嵌入各种异步逻辑中,是比原始互斥锁更高级的同步工具。以上就是c++++怎么使用std::future和std::promise进行线程同步_c++ future与promise多线程通信方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号