C++Future简单的使用

简介: C++Future简单的使用

C++Future简单的使用,参考c++并发编程指南

#include "stdafx.h"
#include <thread>
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <mutex>
#include <stack>
#include <string>
#include <exception>
#include <memory> // For std::shared_ptr<>
#include <queue>
#include <condition_variable>
#include <atomic>
#include <future>
using namespace std;
int Add()
{
    cout << "Future add exe!" << endl;
    return 1;
}
int Sum(int a, int b)
{
    return a + b;
}
struct MySum
{
    int Sum(int a, int b){ return a + b; }
};
int _tmain(int argc, _TCHAR* argv[])
{
    std::future<int> the_answer = std::async(std::launch::async/*std::launch::deferred*/, Add);
    // 通过延时来看期望的两个选项的差异(std::launch::async --- 异步线程执行,std::launch::deferred --- 延时执行)
    this_thread::sleep_for(chrono::seconds(10));
    std::cout << "The answer is " << the_answer.get() << std::endl;
    std::future<int> the_sum = std::async(Sum, 1, 2);
    std::cout << "The Sum is " << the_sum.get() << std::endl;
    MySum TheStructSum;
    std::future<int> StructSum = std::async(&MySum::Sum, TheStructSum, 3, 4);
    std::cout << "The Struct Sum is " << StructSum.get() << std::endl;
    return 0;
}
相关文章
|
6月前
|
存储 前端开发 安全
C++一分钟之-未来与承诺:std::future与std::promise
【6月更文挑战第27天】`std::future`和`std::promise`是C++异步编程的关键工具,用于处理未完成任务的结果。`future`代表异步任务的结果容器,可阻塞等待或检查结果是否就绪;`promise`用于设置`future`的值,允许多线程间通信。常见问题包括异常安全、多重获取、线程同步和未检查状态。解决办法涉及智能指针管理、明确获取时机、确保线程安全以及检查未来状态。示例展示了使用`std::async`和`future`执行异步任务并获取结果。
128 2
|
7月前
|
存储 前端开发 安全
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索(三)
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索
96 0
|
7月前
|
存储 设计模式 前端开发
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索(二)
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索
139 0
|
7月前
|
并行计算 前端开发 安全
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索(一)
【C++并发编程】std::future、std::async、std::packaged_task与std::promise的深度探索
223 0
|
7月前
|
前端开发 C++
C++11实用技术(三)std::future、std::promise、std::packaged_task、async
C++11实用技术(三)std::future、std::promise、std::packaged_task、async
105 0
|
前端开发 C++ 容器
C++并发与多线程(四)async、future、packaged_task、promise、shared_future(下)
C++并发与多线程(四)async、future、packaged_task、promise、shared_future(下)
|
前端开发 Go C++
C++并发与多线程(四)async、future、packaged_task、promise、shared_future(上)
C++并发与多线程(四)async、future、packaged_task、promise、shared_future(上)
122 0
|
存储 前端开发 Java
【Example】C++ 标准库多线程同步及数据共享 (std::future 与 std::promise)
阅读此文章前,务必读懂:【Example】C++ 标准库 std::thread 与 std::mutex 否则你会像听天书一样懵。(...)
615 0
|
NoSQL 前端开发 网络协议
详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)(而)
详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)
225 0
|
消息中间件 前端开发 Dubbo
详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)(一)
详谈C++11新特性之future及开源项目ananas(folly,std c++11和ananas的future各自的区别是?)
817 0