furture-demo

std::unorderd_map 简介 unorderd_map 简介 阅读详情
// future example
#include <chrono> // std::chrono::milliseconds
#include <cmath>
#include <future>   // std::async, std::future
#include <iostream> // std::cout

std::chrono::steady_clock::time_point now() {
    return std::chrono::steady_clock::now();
}

long long sub(std::chrono::steady_clock::time_point begin, std::chrono::steady_clock::time_point end) {
    return std::chrono::duration_cast<std::chrono::seconds>(end - begin).count();
}

int shared_future() {
    std::cout << "--------------- shared_future" << std::endl;
    std::future<int> fut = std::async([] { return 10; });
    std::shared_future<int> shared_fut = fut.share(); //after fut is not valid

    // 共享的 future 对象可以被多次访问.
    std::cout << "value: " << shared_fut.get() << '\n';
    std::cout << "its double: " << shared_fut.get() * 2 << '\n';

    std::cout << "--------------- shared_future" << std::endl;
    return 0;
}

int wait() {
    // a non-optimized way of checking for prime numbers:
    auto is_prime = [](int x) {
        for (int i = 2; i < x; ++i) {
            if (x % i == 0)
                return false;
        }
        return true;
    };
    // call function asynchronously:
    std::future<bool> fut = std::async(is_prime, 194232491);

    std::cout << "Checking...\n";
    fut.wait();

    std::cout << "\n194232491 ";
    if (fut.get()) // guaranteed to be ready (and not block) after wait returns
        std::cout << "is prime.\n";
    else
        std::cout << "is not prime.\n";

    return 0;
}

int wait_for() {
    std::cout << "--------------- wait_for" << std::endl;
    // a non-optimized way of checking for prime numbers:
    auto is_prime = [](int x) {
        for (int i = 2; i < x; ++i) {
            if (x % i == 0)
                return false;
        }
        return true;
    };
    // call function asynchronously:
    std::future<bool> fut = std::async(is_prime, 444444443);

    // do something while waiting for function to set future:
    std::cout << "checking, please wait";
    std::chrono::milliseconds span(100);
    while (fut.wait_for(span) == std::future_status::timeout)
        std::cout << '.';

    bool x = fut.get(); // retrieve return value

    std::cout << "\n444444443 " << (x ? "is" : "is not") << " prime.\n";

    std::cout << "--------------- wait_for" << std::endl;
    return 0;
}

int async() {
    std::cout << "--------------- async" << std::endl;

    auto ThreadTask = [](int n) {
        std::cout << std::this_thread::get_id()
                  << " start computing..." << std::endl;

        double ret = 0;
        for (int i = 0; i <= n; i++) {
            ret += std::sin(i); //正弦函數
        }

        std::cout << std::this_thread::get_id()
                  << " finished computing..." << std::endl;
        return ret;
    };

    std::future<double> f(std::async(std::launch::async, ThreadTask, 100000000));

#if 0
    while(f.wait_until(std::chrono::system_clock::now() + std::chrono::seconds(1))
            != std::future_status::ready) {
        std::cout << "task is running...\n";
    }
#else
    while (f.wait_for(std::chrono::seconds(1)) != std::future_status::ready) {
        std::cout << "task is running...\n";
    }
#endif

    std::cout << f.get() << std::endl;
    std::cout << "--------------- async" << std::endl;

    return EXIT_SUCCESS;
}

int deferred() {
    std::cout << "--------------- deferred" << std::endl;
    auto do_print_ten = [](char c, int ms) {
        for (int i = 0; i < 10; ++i) {
            std::this_thread::sleep_for(std::chrono::milliseconds(ms));
            std::cout << c;
        }
    };

    std::cout
        << "with launch::async:\n";
    std::future<void> foo =
        std::async(std::launch::async, do_print_ten, '*', 100);
    std::future<void> bar =
        std::async(std::launch::async, do_print_ten, '@', 200);
    // async "get" (wait for foo and bar to be ready):
    foo.get();
    bar.get();
    std::cout << "\n\n";

    std::cout << "with launch::deferred:\n";
    foo = std::async(std::launch::deferred, do_print_ten, '*', 100);
    bar = std::async(std::launch::deferred, do_print_ten, '@', 200);
    // deferred "get" (perform the actual calls):
    foo.get();
    bar.get();
    std::cout << '\n';
    std::cout << "--------------- deferred" << std::endl;

    return 0;
}

int asyncTime() {
    auto sleep = [](int s) { std::this_thread::sleep_for(std::chrono::seconds(s)); };

    auto start = now();
    std::async(std::launch::async, sleep, 2);               // 临时对象被析构,阻塞 2s
    std::cout << "cost:" << sub(start, now()) << std::endl; //cost 2s
    start = now();
    std::async(std::launch::async, sleep, 2);               // 临时对象被析构,阻塞 2s
    std::cout << "cost:" << sub(start, now()) << std::endl; //cost 2s

    start = now();
    auto f1 = std::async(std::launch::async, sleep, 2);
    std::cout << "cost:" << sub(start, now()) << std::endl; //cost 0s
    start = now();
    auto f2 = std::async(std::launch::async, sleep, 2);
    std::cout << "cost:" << sub(start, now()) << std::endl; //cost 0s
    f2.get();
    std::cout << "cost:" << sub(start, now()) << std::endl; //cost 2s
    return 0;
}

int main() {
    shared_future();
    wait_for();
    wait();
    async();
    deferred();
    auto start = now();
    asyncTime();
    std::cout << "main::cost:" << sub(start, now()) << std::endl; //cost 6s
    return 0;
}
CentOS7 安装天气分型软件cost733过程详解 cost733是一款天气分型软件,其内置的一些算法可以帮助气象工作者进行天气类型划分等(我也是初学者,仅仅知道一些皮毛),但是网上找到的安装办法比较少,并且总会出现一些报错,试了一晚上,终于将安装办法调通了,希望可以帮助到大家 阅读详情

相关推荐

深入理解Cornerstone3D.js渲染Stack影像数据

这个是调用的core\src下的init.ts的init方法,作用是:初始化cornerstone-core,检测客户端是否支持WebGL,默认情况下是支持中等GPU层级.另外一个重要的是实例化WebWorkManager.WebWorkManager类似于Java的线程池,是用来对Web Worker进行管理的管理器。使用DICOMwebClient获取影像文件的元数据,然后将它们缓存到imageLoader的metaDataManager中,在上面我们可以输出元数据看一下是什么。

wangwei19820517的博客 1493

Java并发编程:Callable、Future和FutureTask原理解析

返回结果的任务Callable与FutureExecutor框架使用Runnable作为其基本的任务表示形式。Runnable是一种有很大局限的抽象,它不能返回一个值或抛出一个受检查的异常。Runnable接口:public interface Runnable { public abstract void run(); }由于run()方法返回值为void类型,所以在执行完任务之后无法返回

codershamo的博客 2万+

HDLbits练习11 - Counter 1-12 ( Exam/ece241 2014 q7a )

(如这题用于当复位信号为高或者计数器递增至12时,该信号置1使计数器的输入信号 ’ d ’ 变为 ’ 4’b0001 ’ ,再加载到 ’ Q ’ 中。当 ’ load ’ 信号为高时,在时钟的上升沿,计数器会将 ’ d ’ 输入的值加载到 ’ Q ’ (计数器的输出)中,而不是递增当前值。用途:在时钟上升沿触发的情况下,如果 ’ enable ’ 信号为高,计数器的值会递增,如果 ’ load ’ 信号为高,计数器将加载 ’ d ’ 信号的值。作用: ’ Q ’ 是计数器的当前值,也是模块的主要输出。

weixin_62830176的博客 473

in future 和 in the future用法的区别

in future 和当前的事情有关系,比如说今天迟到了,老师警告说今后要按时到学校哦,就用in future。in the future 只是一种抽象的概念,词组有in the near/distant future, 不久/很久以后。牛津例句1. Please be punctual in future. 今后请准时。2. Who knows what will happen in the f...

Li Kang 笔记本 2万+

电赛综合测评题练习(一)-(与2013年电赛综合测评要求类似)

电赛综合测评题练习 文章目录电赛综合测评题练习前言1. 波形发生器1.1 题目说明1.1.1 可用器件1.1.2 设计要求1.1.3 设计方案论证1.2 仿真电路设计1.2.1 脉冲波发生器电路1.2.1.1 方案介绍1.2.1.2 理论分析与计算1.2.1.3 电路系统设计1.2.1.4 仿真方案与仿真测试结果1.2.2 锯齿波电路1.2.2.1 理论分析与计算1.2.2.2 电路系统设计1.2.2.3 仿真方案与仿真测试结果1.2.3 正弦波I电路1.2.3.1 理论分析与计算1.2.3.2 电路系

daydayup!的博客 3万+

C# emgu.cv图像识别 从大图中寻找小图,判断存在图的相似度

这是2个问题,我采用emgu.cv来解决这个识别问题,这里需要在nuget中引用emgu。最近写了一个在一张图片中,截取一部分,通过机器判断截取图片是这张图片的。第一、通过小图去找判断是否存在大图中,第二、小图存在大图的什么位置。

一个专注于技术研究创新的程序员 2467

Future和FutureTask的区别

java中有Future和FutureTask这两个类Future是一个接口,代表可以取消的任务,并可以获得任务的执行结果FutureTask 是基本的实现了Future和runnable接口           实现runnable接口,说明可以把FutureTask实例传入到Thread中,在一个新的线程中执行。           实现Future接口,说明可以从FutureTask中通过g...

lovezhaohaimig的博客 4789

H.264 入门篇 - 09 (帧间预测 - 参考帧列表)

短期和长期的关系和区别:在一个解码器中的 DPB(参考帧缓存)大小总是有限的,所以引入一个问题,什么样的参考帧会被保存到 DPB 中,什么样的参考帧会被移除出去,因此将分为长期和短期参考帧,所谓短期参考帧是这帧不会长期驻留在DPB中,如果参考帧缓存已满或者有其他特定的条件,那么短期参考帧就会被从DPB中移除;与之相对的长期参考帧,只要没有遇到某个指定的条件,遇到某个IDR帧, 遇到了清空整个DPB的指令等等,那么长期参考帧会长期在DPB中,不会因为有新的参考帧而被冲刷掉;(P帧是按照编码顺序)

StephenZhou 5104

对多线程future以及futureTask的理解

异步计算助手FutureTask 由来原因: 无论是Runnable实例还是Callable实例所表示的任务,只要我们把这些任务扔到线程池中,那么这些任务就是异步任务。 1.采用Runnbale实例来表示异步任务,其优点:任务既可以以相应的Runnable实例为参数创建并启动一个工作线程,也可以交给一个线程池或者Executor的其他实例类来执行;其缺点:我们无法直接获取任务的执行结果。 2...

qq_33531432的博客 403

YOLOv8安防监控实战:跌倒/闯入/徘徊实时检测(附TensorRT加速+声光报警部署代码)

精准性:针对跌倒/闯入/徘徊的行为特征优化,准确率达89.3%,误报率低于5次/天;实时性:TensorRT加速到50+FPS,报警延迟<1秒,满足安防“黄金响应时间”;低成本:无需专用AI芯片,RTX 3060或Jetson Orin就能跑,硬件成本比传统方案低60%;易部署:代码全开源,提供从模型训练到硬件联动的完整流程,2天即可搭起原型系统。如果你的安防监控还在“漏报误报”“响应慢”,建议先从跌倒检测的姿态过滤改起——用100张样本测试,再集成TensorRT加速,90%能看到明显改善。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 681

ABAP Cloud:面向云时代的 ABAP 开发范式与实践指南

摘要: 本文系统讲解SAP ABAP Cloud开发模型,涵盖其架构、工具链、规范及实践。ABAP Cloud作为统一开发模型,支持在SAP BTP和S/4HANA上构建云就绪应用,遵循clean core原则,通过RAP(RESTful应用编程模型)实现低耦合扩展。文章详细解析其核心构成(RAP、稳定API、clean core约束)、工具链(ADT、软件物流)及两种典型扩展场景(on-stack与side-by-side),并附可运行RAP示例代码(如销售笔记应用)。重点强调通过规范开发确保系统可升级性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 409

多线程编程七-Furture模式

Furture模式是把一个任务拆成多个子任务,没有依赖关系的子任务来并行执运行的模式,旨在提高程序处理效率 假如说做饭需要三步,买菜(2秒)、买油(3秒)、炒菜(4秒)三步,其中买菜、买油可以两个人同时做,炒菜依赖买菜、买油的结果。 private String buyVegetable() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace();...

qq_35930102的博客 803

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3053

设计模式-Future

Future设计模式学习记录备忘 Future模式设计图 图片摘自(https://www.cnblogs.com/jianzh5/p/6121120.html) 简单实现代码 Data接口 package org.cc.future; public interface Data { public String getResult(); } ...

sdfsfaf的博客 509

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

J.U.C系列(四)FutrueTask的使用

FutureTask FutureTask实现了RunnableFuture接口,RunnableFuture接口继承于Runnable, Future<V> 这使得FutureTask既可以当做一个任务执行,也可以有 返回值。 public class FutureTask<V> implements RunnableFuture<V> public interface RunnableFuture<V> extends Runnable, Future&

u011047968的专栏 408

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Callable与Future

Callable与Future 使用线程池来创建并行的任务: 这个一个简单的demo,可以在最后统一获取执行结果;以此类推ExecutorService threadPool = Executors.newFixedThreadPool(2); Future<Integer> future = threadPool.submit(new Callable<Integer>() {

qq_23339149的博客 392

C++11,thread,sleep,锁

相关链接:https://blog.youkuaiyun.com/knowledgebao/article/details/85076661 sleep: #include &lt;thread&gt; #include &lt;iostream&gt; auto start = std::chrono::high_resolution_clock::now(); std::this_thread::...

knowledgebao的博客 2858

stdout stderr 重定向到文件

stdout/stderr 重定向到新文件,重定向到已经打开的文件,命令行的重定向

knowledgebao的博客 2391

C/C++调用第三方程序

相关链接:https://blog.youkuaiyun.com/knowledgebao/article/details/85076661 目录 linux下: 1,exec() 2,spawn() 3,stem() window下: 1,WinExec()函数 2,ShellExecute()函数 3,CreateProcess函数 4,CreateProcessAsUser lin...

knowledgebao的博客 2183

c/c++/c++11/c++14 static const constexpr区别

c/c++/c++11/c++14 static const constexpr区别

knowledgebao的博客 1727

C语言-含有指针的结构体浅拷贝注意事项

相关链接:https://blog.youkuaiyun.com/knowledgebao/article/details/85076661 浅拷贝指针覆盖问题。 下边代码包含: 1,结构体CHSYS_AV_DecParam 2,CHSYS_AV_DecParam的变量m_paramDec 3,函数Create 有两点需要注意: 第一:判断if (pParam != &amp;m_paramDe...

knowledgebao的博客 1574

GCC编译/连接/优化等选项

GCC 编译流程分为四个阶段:预处理、编译、汇编、链接,这里讲解gcc用到的一些参数-o(输出文件名)-lm(链接数学库 libm)-Wall(启用警告)-O2(优化级别)–gc-sections(移除未使用的节)-soname(设置共享库运行时名称)-T(使用自定义链接脚本)

knowledgebao的博客 1573

strncpy 和 snprintf 的区别

strncpy 和 snprintf 的区别尾部是否添加 '\0' 字符问题

knowledgebao的博客 950

C++time相关

using TIME_POINT = std::chrono::steady_clock::time_point; TIME_POINT getCurrentTimePoint(){ return std::chrono::steady_clock::now(); } int64_t getDeltaS(TIME_POINT beg){ return getDeltaS(beg, getCurrentTimePoint()); } int64_t getDeltaS(TIME_POIN

knowledgebao的博客 523

std::future

1. future 1. future 1.1. future相关结构 1.2. async相关结构 1.3. packaged_task 相关结构 1.4. promise相关结构 1.5. 参考资料 1.1. future相关结构 Member functions fun desc pub/priv (constructor) constructs the future object (public member function) (destructor) destruc

knowledgebao的博客 292

promise-demo

#include <chrono> // std::chrono::seconds #include <exception> // std::exception, std::current_exception #include <functional> // std::ref #include <future> // std::promise, std::future #include <iostream> // std::c

knowledgebao的博客 190
上一篇: cmake举例
下一篇: packaged_task-demo
knowledgebao
博客等级 码龄15年 401粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值