摘要: C++11 提供了std::future类模板,future 对象提供访问异步操作结果的机制,很轻松解决从异步任务中返回结果。 在 C++ 标准库中,有两种“期望”,使用两种类型模板实现(这里主要介绍的是唯一期望): 唯一期望(unique futures,std::future<>) 实例只能与一 阅读全文
posted @ 2024-03-25 18:30 小熊酱 阅读(2) 评论(0) 推荐(0) 编辑
摘要: C++11提供了异步接口std::async,通过这个异步接口可以很方便的获取线程函数的执行结果。std::async会自动创建一个线程去调用线程函数,它返回一个std::future,这个future中存储了线程函数返回的结果,当我们需要线程函数的结果时,直接从future中获取,非常方便。但是我 阅读全文
posted @ 2024-03-25 16:35 小熊酱 阅读(22) 评论(0) 推荐(0) 编辑
摘要: C++标准库对条件变量有两套实现:std::condition_variable 和 std::condition_variable_any 。 这两个实现都包含在 <condition_variable> 头文件的声明中。 两者都需要与一个互斥量一起才能工作(互斥量是为了同步); 前者仅限于与 s 阅读全文
posted @ 2024-03-25 15:13 小熊酱 阅读(2) 评论(0) 推荐(0) 编辑
摘要: C++11 标准中定义了另外一个与 Mutex RAII 相关类 unique_lock,该类与 lock_guard 类相似,也很方便线程对互斥量上锁,但它提供了更好的上锁和解锁控制。 unique_lock 对象以独占所有权的方式( unique owership)管理 mutex 对象的上锁和 阅读全文
posted @ 2024-03-24 23:17 小熊酱 阅读(19) 评论(0) 推荐(0) 编辑
摘要: std::lock_gurad 是 C++11 中定义的模板类。定义如下: template <class Mutex> class lock_guard; lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个 lock_g 阅读全文
posted @ 2024-03-24 22:48 小熊酱 阅读(35) 评论(0) 推荐(0) 编辑
摘要: C++中通过实例化 std::mutex 创建互斥量, 通过调用成员函数lock()进行上锁, unlock()进行解锁。 不过, 不推荐实践中直接去调用成员函数, 因为调用成员函数就意味着, 必须记住在每个函数出口都要去调用unlock(), 也包括异常的情况。 C++标准库为互斥量提供了一个RA 阅读全文
posted @ 2024-03-24 22:02 小熊酱 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 线程标识类型是 std::thread::id , 可以通过两种方式进行检索。 第一种, 可以通过调用 std::thread 对象的成员函数 get_id() 来直接获取。 如果 std::thread 对象没有与任何执行线程相关联, get_id() 将返回 std::thread::type 阅读全文
posted @ 2024-03-24 21:47 小熊酱 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 假设要写一个在后台启动线程的函数, 想通过新线程返回的所有权去调用这个函数, 而不是等待线程结束再去调用; 或完全与之相反的想法: 创建一个线程, 并在函数中转移所有权,都必须要等待线程结束。 总之, 新线程的所有权都需要转移。这就是移动引入 std::thread 的原因。 C++标准库中有很多资 阅读全文
posted @ 2024-03-24 21:40 小熊酱 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 向 std::thread 构造函数中的可调用对象, 或函数传递一个参数很简单。 需要注意的是, 默认参数要拷贝到线程独立内存中, 即使参数是引用的形式, 也可以在新线程中进行访问 。 void f(int i, std::string const& s); std::thread t(f, 3, 阅读全文
posted @ 2024-03-24 21:05 小熊酱 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 当倾向于在无异常的情况下使用join()时, 需要在异常处理过程中调用join(), 从而避免生命周期的问题。 struct func; // 定义在清单2.1中 void f() { int some_local_state=0; func my_func(some_local_state); s 阅读全文
posted @ 2024-03-24 20:44 小熊酱 阅读(1) 评论(0) 推荐(0) 编辑