摘要:
第六章主要介绍了 C++11 中的原子类型及其相关的API,原子类型的大多数 API 都需要程序员提供一个 std::memory_order(可译为内存序,访存顺序) 的枚举类型值作为参数,比如:atomic_store,atomic_load,atomic_exchange,atomic_compare_exchange 等 API 的最后一个形参为 std::memory_order order,默认值是 std::memory_order_seq_cst(顺序一致性)。那么究竟什么是 std::memory_order 呢,为了解答这个问题,我们先来讨论 C++11 的内存模型。 阅读全文
随笔分类 - C++11
C++11 并发指南三(Lock 详解)
2013-10-02 11:38 by Haippy, 81088 阅读, 收藏, 编辑
摘要:
在 《C++11 并发指南三(std::mutex 详解)》一文中我们主要介绍了 C++11 标准中的互斥量(Mutex),并简单介绍了一下两种锁类型。本节将详细介绍一下 C++11 标准的的锁类型。 阅读全文
C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
2013-09-07 11:18 by Haippy, 30312 阅读, 收藏, 编辑
摘要:
前面三篇文章《C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)》、《C++11 并发指南六( 类型详解二 std::atomic )》、《C++11 并发指南六(atomic 类型详解三 std::atomic (续))》都是采用 C++ 的方式介绍原子对象,本节我会给大家介绍 C++11 原子操作中 C 风格的 API。 阅读全文
C++11 并发指南六(atomic 类型详解三 std::atomic (续))
2013-09-06 11:22 by Haippy, 28556 阅读, 收藏, 编辑
摘要:
C++11 并发指南六( 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std::atomic 针对整形(integral)和指针类型的特化版本做了哪些改进。 阅读全文
C++11 并发指南六( <atomic> 类型详解二 std::atomic )
2013-09-05 22:32 by Haippy, 92072 阅读, 收藏, 编辑
摘要:
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag 过于简单,只提供了 test_and_set 和 clear 两个 API,不能满足其他需求(如 store, load, exchange, compare_exchange 等),因此本文将介绍功能更加完善的 std::atomic 类。 阅读全文
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)
2013-09-03 22:16 by Haippy, 48665 阅读, 收藏, 编辑
摘要:
C++11 并发指南已经写了 5 章,前五章重点介绍了多线程编程方面的内容,但大部分内容只涉及多线程、互斥量、条件变量和异步编程相关的 API,C++11 程序员完全可以不必知道这些 API 在底层是如何实现的,只需要清楚 C++11 多线程和异步编程相关 API 的语义,然后熟加练习即可应付大部分多线程编码需求。但是在很多极端的场合下为了性能和效率,我们需要开发一些 lock-free 的算法和数据结构,前面几章的内容可能就派不上用场了,因此从本文开始介绍 C++11 标准中 头文件里面的类和相关函数。 阅读全文
C++11 并发指南后续更新
2013-08-31 17:28 by Haippy, 11478 阅读, 收藏, 编辑
摘要:
C++11 并发指南的第一篇是 2013 年 8 月 3 号写的,到今天(2013 年 8 月 31 号)差不多一个月了,前前后后共写了 8 篇博客介绍 C++11 的并发编程,但还差 atomic 和 C++11 内存模型两章还在草稿中。今天回顾一下之前写的博客,发现内容还远远不够,很多东西都还也有完成,和自己计划差距还很远,我也想把这个系列一直写下去,一来对自己也是一种提高,另外 C++11 是一种趋势,了解 C++11 的并发编程对一个新时代的 C++ 程序员来说也是必修课,我也希望自己的这个系列博客能够帮助大家学习 C++11 的并发编程,所以我后面会把 《C++11 并发指南》放在 github 上持续更新 阅读全文
C++11 并发指南系列
2013-08-27 11:32 by Haippy, 97662 阅读, 收藏, 编辑
摘要:
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程 阅读全文
C++11 并发指南四(<future> 详解三 std::future & std::shared_future)
2013-08-27 10:55 by Haippy, 83663 阅读, 收藏, 编辑
摘要:
上一讲《C++11 并发指南四(future 详解二 std::packaged_task 介绍)》主要介绍了 future 头文件中的 std::packaged_task 类,本文主要介绍 std::future,std::shared_future 以及 std::future_error,另外还会介绍 future 头文件中的 std::async,std::future_category 函数以及相关枚举类型。 阅读全文
C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)
2013-08-24 22:20 by Haippy, 48191 阅读, 收藏, 编辑
摘要:
上一讲《C++ 并发指南四(std::future 详解一)》主要介绍了 头文件中的 std::promise 类,本文主要介绍 std::packaged_task。 阅读全文
C++11 并发指南四(<future> 详解一 std::promise 介绍)
2013-08-24 12:20 by Haippy, 87344 阅读, 收藏, 编辑
摘要:
前面两讲《C++11 并发指南二(std::thread 详解)》,《C++11 并发指南三(std::mutex 详解)》分别介绍了 std::thread 和 std::mutex,相信读者对 C++11 中的多线程编程有了一个最基本的认识,本文将介绍 C++11 标准中 头文件里面的类和相关函数。 阅读全文
C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
2013-08-11 23:17 by Haippy, 55909 阅读, 收藏, 编辑
摘要:
前面八章介绍了 C++11 并发编程的基础(抱歉哈,第四章-第八章还在草稿中),本文将综合运用 C++11 中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——生产者消费者模型,并给出完整的解决方案。
生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源。本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模型,多生产者-单消费者模型,多生产者-多消费者模型,我会给出四种情况下的 C++11 并发解决方案,如果文中出现了错误或者你对代码有异议,欢迎交流 ;-)。 阅读全文
C++11 并发指南二(std::thread 详解)
2013-08-04 13:37 by Haippy, 193783 阅读, 收藏, 编辑
摘要:
上一篇博客《C++11 并发指南一(C++11 多线程初探)》中只是提到了 std::thread 的基本用法,并给出了一个最简单的例子,本文将稍微详细地介绍 std::thread 的用法。 阅读全文
C++11 并发指南一(C++11 多线程初探)
2013-08-03 22:27 by Haippy, 159597 阅读, 收藏, 编辑
摘要:
C++11 自2011年已经发布以来快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉。
相信 Linux 程序员都用过 Pthread, 但有了 C++11 的 std:thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以作为一名 C++ 程序员,熟悉 C++11 的多线程编程方式还是很有益处的。 阅读全文