C++11 学习笔记(9) 线程与信号 改进2 atomic

本文基于 C++11 学习笔记(7) 线程与信号 添加上了 atomic 支持做的改进:

改进的参考资源:
C++11 atomic 与 mutex 性能比较
stackoverflow 讨论C++11 atomic 与 mutex 速度
介绍 atomic 并发的博客
C++11 atomic memory model
C++11 修复了双重检查锁定问题

引用 wilburding作者的 C++11 atomic memory model文章(http://wilburding.github.io/blog/2013/04/07/c-plus-plus-11-atomic-and-memory-model/) :

C++11 atomic 与 mutex 性能比较 的博客 也提到 使用 std::mutex
直接调用lock unlock 的性能开销比 lock_guard 或者 atomic大的多.

因此针对系列笔记 (7)的代码作了优化:

总结:

  1. memory model 使用方式, 比如 memory_order_relaxed适合写在loop条件中
  2. 尽量不直接调用 std::mutex的lock unlock, 使用 atomic 原语或者 lock_guard
    std::mutex m;
    std::lock_guard l(m);
    ….
    在作用域块块之后, 会l调用析构函数, 自然就unlock了
  3. 多读书, 多看源码, 学会使用 visual studio 2013(demo代码基于 vs2013调试), 嘻嘻

原创文章,转载请注明: 转载自kaka_ace's blog

本文链接地址: C++11 学习笔记(9) 线程与信号 改进2 atomic

发表评论

电子邮件地址不会被公开。 必填项已用*标注