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

推广比较好的网站有哪些简繁英3合1企业网站生成管理系统

推广比较好的网站有哪些,简繁英3合1企业网站生成管理系统,电子交易网站流程,广州做网站哪个平台好为了便于理解 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://www.yayakq.cn/news/273118/

相关文章:

  • 搭建公司内部网站百度金融
  • 九度互联网站推广公司个人网站还用备案吗
  • 个人网站建设月租抵30元福州如何做百度的网站推广
  • 高端网站设计制作方法深圳市住房和建设局工程交易服务主页
  • 美食网站开发可行性分析报告专业购物网站定制
  • 网站建设算软件还是硬件国内网站建设公司排名
  • 艺术网站建设wordpress 小米主题制作
  • 做的不错的h5高端网站sem推广竞价
  • 怎样用dw做网站主页网站策划中规划预测怎们做
  • 网站开发技术是什么庆安建设局网站
  • 网站开发案例php流速cms是什么意思
  • 网站安全评估怎么做广州网站建设圣矢
  • 育贤网站建设手机网站制作代理
  • 网站版面设计方案如何网站建设 需要详细的步骤
  • 产品宣传网站的重点哪些网站的做的好看
  • 云主机 几个网站广州哪个网站建设公司好
  • 网站seo源码wordpress king主题下载
  • 淄博网站建设 优易科技奉化网站建设
  • 做期货网站违法的吗桂林做网站的公司有哪些
  • 盐城专业网站建设哪家好品牌vi设计案例ppt
  • 青岛公司做网站wordpress网址修改
  • 网站建设公司的转型企业信息管理系统有哪些
  • 成都高端网页设计公司厦门seo外包服务
  • 旅游网站建设要求四川网站建设培训班
  • 邢台移动网站设计学校网站建设推进会
  • 有没有可以做app的网站河南省重点项目建设网
  • 北京网站建设主页随身wifi网站设置
  • 专业建设网站哪个好手机怎么管理wifi踢人
  • 怎么设置公司网站电子商务网站dw建设实验报告
  • 百度智能云网站建设wordpress写文章发失败