• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: C/C++
  • 标签: 多线程  future  

资源简介

c++11多线程编程库中的future库的使用实例,供多线程编程参考学习

资源截图

代码片段和文件信息

#include        // std::cout
#include      // std::ref
#include          // std::thread
#include          // std::promise std::future

void print_int(std::future& fut) {
int x = fut.get(); // 获取共享状态的值.
std::cout << “value: “ << x << ‘\n‘; // 打印 value: 10.
}

int test_future_1()
{
std::promise prom; // 生成一个 std::promise 对象.
std::future fut = prom.get_future(); // 和 future 关联.
std::thread t(print_int std::ref(fut)); // 将 future 交给另外一个线程t.
prom.set_value(10); // 设置共享状态的值 此处和线程t保持同步.设置在join之前
t.join();
return 0;
}

std::promise prom2;

void print_global_promise() {
std::future fut = prom2.get_future();
int x = fut.get();
std::cout << “value: “ << x << ‘\n‘;
}

int test_future_2()
{
std::thread th1(print_global_promise);
prom2.set_value(10);
th1.join();

prom2 = std::promise();    // prom 被move赋值为一个新的 promise 对象.

std::thread th2(print_global_promise);
prom2.set_value(20);
th2.join();

return 0;
}

int countdown(int from int to) {
for (int i = from; i != to; --i) {
std::cout << i << ‘\n‘;
std::this_thread::sleep_for(std::chrono::seconds(1

评论

共有 条评论