[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