当前位置: 首页 > news >正文

开发一个网站做公司内部用建筑工程公司起名字大全

开发一个网站做公司内部用,建筑工程公司起名字大全,架子鼓谱那个网站做的好,泉州网上房地产C 异步编程#xff1a;std::async、std::future、std::packaged_task 和 std::promise 在现代 C 编程中#xff0c;异步编程已经成为一种常见的模式。利用 C11 引入的标准库组件 std::async、std::future、std::packaged_task 和 std::promise#xff0c;我们可以更方便地处…C 异步编程std::async、std::future、std::packaged_task 和 std::promise 在现代 C 编程中异步编程已经成为一种常见的模式。利用 C11 引入的标准库组件 std::async、std::future、std::packaged_task 和 std::promise我们可以更方便地处理多线程任务。本文将介绍这些组件的基本用法及其应用场景帮助你理解如何利用这些工具实现高效的异步编程。 1. std::future 和 std::promise std::future std::future 是一种用于获取异步计算结果的机制。它提供了一个等待异步任务完成并获取结果的方法。std::future 对象通过与 std::promise 结合使用允许线程安全地获取异步操作的结果或异常。 基本用法 #include iostream #include thread #include futurevoid async_task(std::promiseint prom) {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟耗时操作prom.set_value(42); // 设置计算结果 }int main() {std::promiseint prom;std::futureint fut prom.get_future();std::thread t(async_task, std::ref(prom)); // 使用 std::ref 传递 promise 的引用t.detach(); // 线程分离允许在主线程中继续执行int result fut.get(); // 等待异步任务完成并获取结果std::cout Result: result std::endl;return 0; }解释 std::promiseint 创建一个 promise 对象用于设置值。std::futureint fut prom.get_future(); 从 promise 获取 future 对象。在异步线程中调用 prom.set_value(42); 设置结果。fut.get(); 阻塞当前线程直到结果可用。 std::promise std::promise 用于在异步操作中设置结果。它与 std::future 结合使用以便从线程中传递结果或异常。std::promise 对象只能被设置一次设置多次会引发异常。 基本用法 #include iostream #include thread #include futurevoid async_task(std::promiseint prom) {prom.set_value(42); // 设置计算结果 }int main() {std::promiseint prom;std::futureint fut prom.get_future();std::thread t(async_task, std::move(prom)); // 使用 std::move 转移 promiset.join(); // 等待线程完成int result fut.get(); // 获取异步任务的结果会阻塞直到结果可用std::cout Result: result std::endl;return 0; }解释 std::promiseint prom; 创建 promise 对象。std::futureint fut prom.get_future(); 获取 future 对象。在异步线程中通过 prom.set_value(42); 设置结果。fut.get(); 获取结果并阻塞当前线程。 2. std::packaged_task std::packaged_task 是一个可调用对象用于将任务的结果与 std::future 绑定。它允许你将一个普通的函数或函数对象封装为一个异步任务并从中获取结果。 基本用法 #include iostream #include thread #include futureint long_computation(int x) {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟耗时操作return x * x; }int main() {std::packaged_taskint(int) task(long_computation); // 创建任务std::futureint fut task.get_future(); // 获取 future 对象std::thread t(std::move(task), 10); // 使用 std::move 转移任务并传递参数t.join(); // 等待线程完成int result fut.get(); // 获取异步任务的结果会阻塞直到结果可用std::cout Result: result std::endl;return 0; }解释 std::packaged_taskint(int) task(long_computation); 创建一个任务对象封装 long_computation 函数。std::futureint fut task.get_future(); 获取与任务关联的 future 对象。std::thread t(std::move(task), 10); 将任务移动到线程中并传递参数。fut.get(); 获取任务结果。 3. std::async std::async 是一种更高层次的异步操作工具它可以在后台线程中异步执行函数并返回一个 std::future 对象用于获取结果。它比手动创建线程更简单。 基本用法 #include iostream #include future #include chronoint long_computation(int x) {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟耗时操作return x * x; }int main() {std::futureint fut std::async(std::launch::async, long_computation, 10); // 异步执行// 可以在这里做其他事情std::cout Doing other things while waiting for the result... std::endl;int result fut.get(); // 获取异步任务的结果会阻塞直到结果可用std::cout Result: result std::endl;return 0; }解释 std::async(std::launch::async, long_computation, 10); 异步执行 long_computation 函数并传递参数。fut.get(); 获取结果并阻塞当前线程直到结果可用。 总结 std::promise 用于设置异步操作的结果或异常。std::future 用于获取异步操作的结果或异常。std::packaged_task 封装函数为任务并与 std::future 结合使用。std::async 简化异步任务的创建和管理自动处理线程和任务。 通过理解和使用这些 C 标准库组件你可以更高效地进行异步编程管理复杂的任务和线程操作。
http://www.hkea.cn/news/14285246/

相关文章:

  • 网站建设所需的基本内容班级网站 php
  • 哪个网站能帮助做试卷种子资源
  • 苏州网站建设建站网合肥工程建设网站
  • 在网站上做宣传属于广告费用吗合肥市城乡建设局2019网站
  • 网站滑动效果怎么做ui设计做app网站要学什么
  • 用DW做的网站怎么分享给别人公司做网站怎么赚钱
  • 邢台网站制作哪里有深圳市光明区属于哪个区
  • 有什么做旅游攻略的网站好2022黄页全国各行业
  • 阳江招聘网鹏程包头seo营销公司
  • 万州网站制作网站建设中古典武侠中文字幕
  • 网站的风格设计用wang域名做购物网站怎么样
  • 烟台免费网站建站模板苏州网站建设专业的公司
  • 上海云盾为网站做防护企业文化形象墙设计
  • 可以自己做网站个人网站毕业设计作品
  • 深圳网站软件网站建设百度免费发布信息平台
  • 企业为什么要做网站 作用是什么域名备案信息
  • 做网站多少钱一年织梦个人博客网站源码
  • 做网站做手机app要学什么软件有什么网站可以做一起作业
  • 销售案例网站国家企业信用信息公示系统广东
  • 当今做哪个网站能致富百度发广告怎么发
  • 做一个网站花2万贵吗微盟做一个小程序大概多少钱
  • 集团 投入巨资 做网站阿里巴巴1688网站做店铺
  • 为什么买的网站模版不好用江川区住房和城乡建设局网站
  • 做任务免费领取东西的网站网站有情链接怎么做
  • 怎么制作网站视频教程站长之家关键词挖掘工具
  • 信息化建设好的企业网站有哪些大连百度首页优化
  • 杭州网站定制开发网站备案容易吗
  • 汕头有没有做网站网站源码偷取工具
  • 桥东企业做网站如何免费注册企业邮箱
  • 青海建设厅网站首页网站举报查询