文章分类 -  C++并发编程

C++并发编程(中文版)
摘要:参考链接: https://blog.csdn.net/godmaycry/article/details/72868559 https://blog.csdn.net/c_base_jin/article/details/79541301 https://blog.csdn.net/godmayc 阅读全文
posted @ 2021-09-14 18:40 youlj 阅读(23) 评论(0) 推荐(0)
摘要:当等待线程重新获取互斥量并检查条件时,如果它并非直接响应另一个线程的通知,这就是所谓的伪唤醒(spurious wakeup),也叫虚假唤醒。 使用条件变量的线程安全队列(完整版) 点击查看代码 template<typename T> class threadSafeQueue { public: 阅读全文
posted @ 2021-09-12 17:24 youlj 阅读(42) 评论(0) 推荐(0)
摘要:原文链接:https://www.jianshu.com/p/34d219380d90 阅读全文
posted @ 2021-09-09 17:21 youlj 阅读(13) 评论(0) 推荐(0)
摘要:列表3.8 简单的层级互斥量实现 点击查看代码 class hierarchical_mutex { std::mutex internal_mutex; unsigned long const hierarchy_value; unsigned long previous_hierarchy_va 阅读全文
posted @ 2021-09-08 15:05 youlj 阅读(93) 评论(0) 推荐(0)
摘要:幸运的是,我们还有的别的选项,但是使用这些选项是要付出代价的。 选项1: 传入一个引用 选项2:无异常抛出的拷贝构造函数或移动构造函数 选项3:返回指向弹出值的指针 清单3.5中是一个接口没有条件竞争的堆栈类定义实现,它实现了选项1和选项3:重载了pop(),使用一个局部引用去存储弹出值,并返回一个 阅读全文
posted @ 2021-09-07 17:58 youlj 阅读(94) 评论(0) 推荐(0)
摘要:清单2.8实现了一个并行版的std::accumulate。代码中将整体工作拆分成小任务交给每个线程去做,其中设置最小任务数,是为了避免产生太多的线程。 清单2.8 原生并行版的std::accumulate 点击查看代码 template<typename Iterator,typename T> 阅读全文
posted @ 2021-09-05 18:07 youlj 阅读(36) 评论(0) 推荐(0)
摘要:std::thread对象的容器,如果这个容器是移动敏感的(比如,标准中的std::vector<>),那么移动操作同样适用于这些容器。了解这些后,就可以写出类似清单2.7中的代码,代码量产了一些线程,并且等待它们结束。 清单2.7 量产线程,等待它们结束 点击查看代码 struct funcStr 阅读全文
posted @ 2021-09-05 12:49 youlj 阅读(34) 评论(0) 推荐(0)