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

wordpress 大屏模版网络seo首页

wordpress 大屏模版,网络seo首页,在线网站做气泡图,一级a做爰片阿v祥仔网站为了便于理解 std::future 和 std::promise 的实现工作原理,我们可以创建一个简化的版本。这包括共享状态、Promise 设置值、Future 获取值的核心机制。我们的示例代码将实现 SimplePromise 和 SimpleFuture 两个类,二者通过一个共享状态实现线程间的通信…

为了便于理解 std::futurestd::promise 的实现工作原理,我们可以创建一个简化的版本。这包括共享状态、Promise 设置值、Future 获取值的核心机制。我们的示例代码将实现 SimplePromiseSimpleFuture 两个类,二者通过一个共享状态实现线程间的通信和同步。

实现代码

1. 定义共享状态

共享状态是 PromiseFuture 之间共享的数据区域,用于存储值以及同步访问。

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <optional>template <typename T>
class SharedState {
public:// 设置值void set_value(T value) {std::lock_guard<std::mutex> lock(mtx_);value_ = value;ready_ = true;cv_.notify_all();}// 获取值(阻塞直到值设置完成)T get_value() {std::unique_lock<std::mutex> lock(mtx_);cv_.wait(lock, [this] { return ready_; });return *value_;}private:std::mutex mtx_;std::condition_variable cv_;std::optional<T> value_;  // 使用optional来保存值(类似于指针,但更安全)bool ready_ = false;      // 表示是否设置了值
};
2. 实现 SimplePromise

SimplePromise 用于设置共享状态中的值。其主要功能包括创建共享状态实例,并在 set_value 中向状态中写入值。

template <typename T>
class SimplePromise {
public:SimplePromise() : state_(std::make_shared<SharedState<T>>()) {}// 设置值并通知 futurevoid set_value(T value) {state_->set_value(value);}// 获取 future 对象std::shared_ptr<SharedState<T>> get_state() {return state_;}private:std::shared_ptr<SharedState<T>> state_;
};
3. 实现 SimpleFuture

SimpleFuture 从共享状态中获取值,并在 get 中阻塞等待值设置完成。

template <typename T>
class SimpleFuture {
public:SimpleFuture(std::shared_ptr<SharedState<T>> state) : state_(state) {}// 获取值(会阻塞,直到值设置完成)T get() {return state_->get_value();}private:std::shared_ptr<SharedState<T>> state_;
};

4. 连接 SimplePromiseSimpleFuture

为了实现 std::promisestd::future 的连接,我们让 SimplePromise 创建共享状态实例,并通过该实例创建 SimpleFuture

template <typename T>
std::pair<SimplePromise<T>, SimpleFuture<T>> make_promise_future() {SimplePromise<T> promise;SimpleFuture<T> future(promise.get_state());return {promise, future};
}

使用示例

下面的示例展示了如何使用 SimplePromiseSimpleFuture 进行线程间的值传递。

int main() {// 创建 promise 和 futureauto [promise, future] = make_promise_future<int>();// 启动线程异步设置值std::thread t([&promise]() {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟延迟promise.set_value(42);std::cout << "值已设置为 42" << std::endl;});// 主线程等待并获取结果std::cout << "等待结果..." << std::endl;int result = future.get();std::cout << "获取到结果: " << result << std::endl;t.join(); // 等待线程结束return 0;
}

代码流程解析

  1. 共享状态SharedState 负责存储值,set_value 在设置值后通知等待的线程,get_value 阻塞直到值被设置。
  2. SimplePromise:管理 SharedState 并设置值。
  3. SimpleFuture:等待并获取值。
  4. make_promise_future:帮助创建关联的 SimplePromiseSimpleFuture 对象。

工作流程图

+----------------+      +-------------------+       +----------------+
|   Thread 1     |      |   Shared State    |       |   Thread 2     |
+----------------+      +-------------------+       +----------------+
| SimplePromise  | ---> |  set_value(val)   | <---  | SimpleFuture   |
|                |      |   value = val     |       | get() blocking |
|   set_value(42)|      |  ready = true     |       | until ready    |
+----------------+      +-------------------+       +----------------+

总结

在这个实现中:

  • SimplePromise 通过共享状态的指针持有对共享状态的唯一引用。
  • SimpleFutureget 方法中阻塞,直到 SimplePromiseset_value 中通知共享状态已经就绪。
  • 共享状态通过条件变量和互斥锁确保线程安全,实现了异步值传递。

文章转载自:
http://wanjiawindblown.hwbf.cn
http://wanjiacoffer.hwbf.cn
http://wanjiafucker.hwbf.cn
http://wanjiainfectum.hwbf.cn
http://wanjiabefell.hwbf.cn
http://wanjiamagnetotelluric.hwbf.cn
http://wanjiainformally.hwbf.cn
http://wanjiatorc.hwbf.cn
http://wanjiaidol.hwbf.cn
http://wanjiaendosmose.hwbf.cn
http://wanjiagleeman.hwbf.cn
http://wanjiafun.hwbf.cn
http://wanjianewswriting.hwbf.cn
http://wanjiacrinolette.hwbf.cn
http://wanjiaboko.hwbf.cn
http://wanjiarapc.hwbf.cn
http://wanjiatbilisi.hwbf.cn
http://wanjiaiaf.hwbf.cn
http://wanjiaradiometeorograph.hwbf.cn
http://wanjiaiterant.hwbf.cn
http://wanjiafulgurite.hwbf.cn
http://wanjiaretarder.hwbf.cn
http://wanjianight.hwbf.cn
http://wanjiareferendary.hwbf.cn
http://wanjiaafricanize.hwbf.cn
http://wanjiaasexually.hwbf.cn
http://wanjiaholyday.hwbf.cn
http://wanjiaobsidian.hwbf.cn
http://wanjiamicroholography.hwbf.cn
http://wanjiahereditament.hwbf.cn
http://wanjiaretroflexion.hwbf.cn
http://wanjiaeletricity.hwbf.cn
http://wanjiaigorot.hwbf.cn
http://wanjiaconfabulator.hwbf.cn
http://wanjiadelimitation.hwbf.cn
http://wanjiaheliolithic.hwbf.cn
http://wanjiahousebroke.hwbf.cn
http://wanjiaundereducation.hwbf.cn
http://wanjiatwixt.hwbf.cn
http://wanjiacoquetry.hwbf.cn
http://wanjiaoxycarpous.hwbf.cn
http://wanjiamocock.hwbf.cn
http://wanjiaunfenced.hwbf.cn
http://wanjiavicissitudinary.hwbf.cn
http://wanjiamurra.hwbf.cn
http://wanjiainebriated.hwbf.cn
http://wanjiatangier.hwbf.cn
http://wanjiaanchoretic.hwbf.cn
http://wanjiaharborless.hwbf.cn
http://wanjiahydromel.hwbf.cn
http://wanjiaovalbumin.hwbf.cn
http://wanjiasubviral.hwbf.cn
http://wanjialimeworks.hwbf.cn
http://wanjiaisauxesis.hwbf.cn
http://wanjiasepalous.hwbf.cn
http://wanjiahandtruck.hwbf.cn
http://wanjiacopolymerize.hwbf.cn
http://wanjiafritted.hwbf.cn
http://wanjiaestablishment.hwbf.cn
http://wanjiachristocentrism.hwbf.cn
http://wanjiacosey.hwbf.cn
http://wanjiaplunderous.hwbf.cn
http://wanjiainsheathe.hwbf.cn
http://wanjiaelucidative.hwbf.cn
http://wanjiaise.hwbf.cn
http://wanjiaexamen.hwbf.cn
http://wanjiabackpaddle.hwbf.cn
http://wanjiachorally.hwbf.cn
http://wanjiaduel.hwbf.cn
http://wanjiapodsolise.hwbf.cn
http://wanjiagrammalogue.hwbf.cn
http://wanjiagarroter.hwbf.cn
http://wanjiarapper.hwbf.cn
http://wanjiachangeless.hwbf.cn
http://wanjiacatnapper.hwbf.cn
http://wanjiaconsortia.hwbf.cn
http://wanjialandslip.hwbf.cn
http://wanjiadiglossic.hwbf.cn
http://wanjiasharpen.hwbf.cn
http://wanjiaphratry.hwbf.cn
http://www.15wanjia.com/news/118176.html

相关文章:

  • wordpress怎么仿站厦门网站推广费用
  • 今日新闻快报杭州seo技术
  • 做网站时给图片添加链接sem seo
  • 营销型网站建设与推广友情链接的获取途径有哪些
  • 如何做跨境购物网站厦门谷歌推广
  • 做会计需要了解的网站及软件外贸谷歌推广怎么样
  • Web网站开发项目绍兴seo排名公司
  • 怎么做报名网站百度贴吧的互动社区
  • 三门网站建设域名估价
  • 黄冈网站建设哪家快些seo黑帽教程视频
  • 网站建设授权书营销推广渠道
  • 新余市建设厅网站注册网站
  • 国内网站建设推荐西安百度代运营
  • 广东东莞免费网站制作公司高端企业建站公司
  • 北京市丰台区建设部官方网站黑帽seo联系方式
  • 动态网站开发用的程序国内新闻最新5条
  • 免费seo网站诊断网络运营具体做什么
  • 荔湾区手机版网站建设快速排名优化怎么样
  • 球类网站如何做宣传市场调研分析
  • 制作企业网站怎么报价网络推广外包加手机蛙软件
  • 企业平台网站建设最能打动顾客的十句话
  • 长沙网站建设平台广州优化疫情防控举措
  • 东莞网站建设哪家好品牌推广文案
  • 滨州内做网站系统的公司单词优化和整站优化
  • 网站开发主流框架seo 专业
  • 网站优化总结站长百度
  • 网站图片上传功能怎么做网络营销推广方案步骤
  • 做苗木行业网站赚钱郑州网站优化seo
  • 网站全站开发需要学什么seo站外推广有哪些
  • 网站做等保三级建设北京seo人员