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

cms网站有哪些网站头部导航代码

cms网站有哪些,网站头部导航代码,网店代运营代理,wordpress批量倒入txtstd::future是用来接收一个线程的执行结果的#xff0c;并且是一次性的。 共享状态shared state future可以关联一个共享状态#xff0c;共享状态是用来储存要执行结果的。这个结果是async、promise、packaged_task设置的#xff0c;且这个结果只能设置一次。 创建future …std::future是用来接收一个线程的执行结果的并且是一次性的。 共享状态shared state future可以关联一个共享状态共享状态是用来储存要执行结果的。这个结果是async、promise、packaged_task设置的且这个结果只能设置一次。 创建future 创建future有四种方式 直接构造函数创建这种创建的future没用共享状态。 std::futureDataType future; 调用std::async返回一个future对象返回的future有共享状态。std::async是执行一个异步任务这个任务会放到线程池中的线程执行并通过future返回执行结果。通常异步任务优先考虑使用std::async而不是std::thread。 auto future std::async([]{return DataType{5}; }); std::cout future is Valid: future.valid() , async Result: future.get().n std::endl; 创建std::promise然后调用std::promise::get_future获取future对象返回的future有共享状态。promise可以设置一个值传递给future也可以设置一个异常传递给future。promise的set_value和set_exception 只能调用一次调第二次时会抛出异常。如果promise在析构前都未设置结果调用future::get获取结果会抛出异常。 {std::cout ------------- promise -----------------\n;std::promiseDataType promise;promise.set_value({5});// promise.set_value({6}); //set_value只能调用一次再次调用会抛出异常auto future promise.get_future();// auto future2 promise.get_future(); //get_future只能调用一次再次调用会抛出异常std::cout future is Valid: future.valid() , async Result: future.get().n std::endl;}{std::cout ------------- promise exception -----------------\n;std::promiseDataType promise;try {throw std::runtime_error(error);} catch (...) {// 如果调用了 promise.set_value 则不能调用 promise.set_exception // 否则 promise.set_exception 会抛出异常promise.set_exception(std::current_exception());}auto future promise.get_future();try {auto data future.get();std::cout future is Valid: future.valid() , async Result: data.n std::endl;} catch (const std::exception e) {std::cout e.what() std::endl;}}创建std::packaged_task然后调用get_futurestd::packaged_task::get_future获取future对象返回的future有共享状态。 std::cout ------------- packaged -----------------\n; std::packaged_taskDataType(int) task([](int a) {return DataType{a}; }); auto future task.get_future(); // auto future2 task.get_future(); //get_future只能调用一次再次调用会抛出异常 task(5); std::cout future is Valid: future.valid() , async Result: future.get().n std::endl; future状态 可以通过函数future::valid可以判断future是否有共享状态。如果有共享状态可以进一步通过函数future::wait_for(0s)来判读结果是否已经设置。wait_for有三个返回值 future_status::deferred 表示结果还未设置future_status::ready 表示结果已经设置future_status::timeout 表示超时 获取结果 通过future::get函数可以获取future的结果调用get函数需要注意以下几点 只有有共享状态的future才能获取结果如果没有共享状态会抛出异常。如果获取数据时future结果已经设置好则会立即返回。如果future状态还未设置好则会挂起线程一直等待直到结果被设置。如果相应async、promise、packaged_task到结束都一直未设置状态则会抛出异常。get函数只能调用一次调用完成后则会删除共享状态再次调用get函数会因为没有共享状态而抛出异常。 也可以调用waitwait_for, wait_until等带结果被设置。 多线程调用future 获取future结果时可以先判断future是否有共享状态然后再调用get函数获取结果代码如下 if (future.valid()){future.get();} 上面代码在单线程调用没有问题如果在线程同时调用则会有问题多个线程会同时判断future有共享状态因此同时有多个线程调用get函数而get函数只能被调用一次从而引发异常。 可以通过加锁解决这个问题但这并不是好的方法。更优雅的方法是通过future::share函数为每个线程创建一个std::shared_future。future调用完share将不再拥有共享状态如下 如果future本身没有共享状态调用share会生成一个没有共享状态的shared_future。 shared_future调用get函数时并不会清楚共享状态所以shared_future可以多次调用get函数。 示例代码 std::promiseDataType promise;auto future promise.get_future();auto shadedFuture future.share();std::cout future is valid: future.valid() std::endl;std::thread threads[4];for (int i 0; i 4; i){threads[i] std::thread([futureshadedFuture](int i){std::cout std::to_string(i) , future is Valid: std::to_string(future.valid()) , async Result: std::to_string(future.get().n) \n;}, i);}std::this_thread::sleep_for(std::chrono::milliseconds{100});promise.set_value({5});for (int i 0; i 4; i){threads[i].join();}std::cout std::endl; future析构阻塞 当future是由async创建的且future/shared_future是最后一个指向共享状态的future如果async还在执行则future在析构时会阻塞当前线程等待async执行完成。
http://www.zqtcl.cn/news/357248/

相关文章:

  • 南京越城建设集团网站网站空间续费多少钱
  • 深圳nft网站开发公司如何制作微信公众号里的小程序
  • 做网站美工要学什么聊城网站建设电话
  • 南通个人网站建设快手秒刷自助网站
  • html5 做网站网站开发找工作
  • 聚成网站建设艺术公司网站定制中心
  • 阿里云上可以做网站吗十六局集团门户网
  • 门户网站建设询价函有哪些网站可以做设计挣钱
  • 如何建立自己网站奔奔网站建设
  • 自由做图网站做网站所用的工具
  • 广西南宁做网站专业网站建设案例
  • 视屏网站的审核是怎么做的群辉 搭建wordpress
  • 嘉兴网站快速排名优化衡阳网站建设制作
  • 建设公共资源交易中心网站成都APP,微网站开发
  • dede网站地图修改厦门百度seo
  • 可以做行程的网站网站详情怎么做的
  • 网站建设心得8000字营销型网站建设的注意事项
  • 织梦购物网站整站源码哈尔滨网站建设技术托管
  • 做推广的网站微信号企业免费网站制作
  • 做旅游网站的引言上海公司网站建设哪家好
  • 找项目去哪个网站网站建设一条龙全包
  • 网站 数据库 模板网站系统建设合作合同范本
  • 网站空间租赁费用企业网站建设需要多少钱知乎
  • 免费建网站哪个模板多浅谈学校网站建设
  • 精致的个人网站手机网站建设基本流程图
  • 优秀网站网页设计图片主机屋做网站视频
  • 安徽网站建设电话编程一个最简单游戏代码
  • 西宁圆井模板我自己做的网站在线平面设计图
  • 浦口区网站建设技术指导做软件需要网站吗
  • 丹东有做公司网站的吗搜索引擎 wordpress