[C++11 多线程异步] --- std::promise/std::future

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11 多线程异步] --- std::promise/std::future相关的知识,希望对你有一定的参考价值。

1 为什么需要异步

C++11 中增加的线程类,使得我们能够非常方便的创建和使用线程,但有时会有些不方便,比如需要获取线程返回的结果,就不能通过 join() 得到结果,只能通过一些额外手段获得,下面给出具体实现代码:

#include <vector>
#include <numeric>
#include <iostream>
#include <chrono>
#include <thread>
#include <mutex>
#include <condition_variable>

int res = 0;						//保存结果的全局变量
std::mutex mu;						//互斥锁全局变量
std::condition_variable cond;       //全局条件变量
 
void accumulate(std::vector<int>::iterator first,
                std::vector<int>::iterator last)

    int sum = std::accumulate(first, last, 0);      //标准库求和函数
    std::unique_lock<std::mutex> locker(mu);
    res = sum;
    locker.unlock();
    cond.notify_one();              // 向一个等待线程发出“条件已满足”的通知

 
int main()

    std::vector<int> numbers =  1, 2, 3, 4, 5, 6 ;
    std::thread work_thread(accumulate, numbers.b

以上是关于[C++11 多线程异步] --- std::promise/std::future的主要内容,如果未能解决你的问题,请参考以下文章

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

C++11 多线程 asyncfuturepackaged_taskpromise

精通C#---多线程,并行,异步编程

Java多线程11-异步编程

C++11 线程与异步性能(VS2013)