C++ 多线程
文章平均质量分 59
繁星意未平
记录我的计算机学习之路,分享计算机专业知识,领悟计算机实践之道。
展开
-
哲学家干饭问题 C++
哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌上有五碗意大利面,每位哲学家之间各有一支餐叉。因为用一支餐叉很难吃到意大利面,所以假设哲学家必须用两支餐叉吃东西。他们只能使用自己左右手边的那两支餐叉。哲学家就餐问题有时也用米饭和五根筷子而不是意大利面和餐叉来描述,因为吃米饭必须用两根筷子。这个问题不考虑意大利面有多少,也不考虑哲学家的胃有多大。假设两者都是无限大。原创 2022-09-18 14:34:52 · 968 阅读 · 0 评论 -
C++ 20 并发编程 std::promise
std::promise和std::future是一对, 通过它们可以进行更加灵活的任务控制原创 2022-08-19 23:40:38 · 449 阅读 · 0 评论 -
C++ 20 线程安全的Map
C++ 线程安全查找表原创 2022-08-14 16:26:57 · 977 阅读 · 0 评论 -
C++20 Atomic 原子 内存模型(二)
原子操作默认使用顺序一致性标志。原创 2022-08-07 16:23:59 · 690 阅读 · 0 评论 -
C++ 20 内存模型(一)
多线程的基础是优秀的内存模型。原创 2022-08-06 15:09:03 · 182 阅读 · 0 评论 -
C++20 std::jthread
std::jthread 表示 joining thread , 与C++11里面的std::thread不同std::jthread 自动join, 并且可以被外部终止原创 2022-08-06 00:44:36 · 455 阅读 · 0 评论 -
std::packaged_task() ---C++17 并发编程
std::packaged_task<>连结了`future`对象与函数(或可调用对象)。原创 2022-02-09 22:50:53 · 735 阅读 · 1 评论 -
std::future ---C++17 多线程
std::future —C++17 多线程std::futureC++标准程序库使用future来模拟这类一次性事件:若线程需等待某个特定的一次性事件发生,则会以恰当的方式取得一个future,它代表目标事件;接着,该线程就能一边执行其他任务(光顾机场茶座),一边在future上等待;同时,它以短暂的间隔反复查验目标事件是否已经发生(查看出发时刻表)。这个线程也可以转换运行模式,先不等目标事件发生,直接暂缓当前任务,而切换到别的任务,及至必要时,才回头等待future准备就绪。future可能与数据关原创 2022-02-08 22:44:28 · 677 阅读 · 0 评论 -
条件变量 ---C++17 多线程
C++标准库提供了条件变量的两种实现:`std::condition_variable` 和` std::condition_variable_any`。它们都在标准库的头文件`<condition_variable>`内声明。两者都需配合互斥,方能提供妥当的同步操作。原创 2022-02-08 19:50:03 · 663 阅读 · 0 评论 -
共享锁和排它锁---C++17 多线程
读写锁把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。C++17开始,标准库提供了`shared_mutex`类(在这之前,可以使用`boost`的`shared_mutex`类或系统相关api)。和其他便于独占访问的互斥类型不同,`shared_mutex` 拥有两个访问级别:原创 2022-02-08 17:30:18 · 839 阅读 · 0 评论