High Performance


  • 首页

  • 技术

  • 分类

Move to www.diting0x.com

发表于 2017-05-07   |  

深入探索并发编程系列(十)-Weakly-ordered CPU的由来

发表于 2016-12-08   |   分类于 High-performance   |  

在这一系列博客中,我已经详细讨论了lock-free编程相关的一系列主题,比如Acquire与Release语义以及Weakly-ordered CPUs. 我已经努力尝试把这些主题讲的更加地通俗易懂,但大家都知道,Talk is cheap.没有言语比具体的例子更能把问题说清楚。

阅读全文 »

深入探索并发编程系列(九)-弱/强内存模型

发表于 2016-10-30   |   分类于 High-performance   |  

存在许多种内存乱序注1,但它们发生的频率并不都是一样的。这取决于你的目标处理器以及开发工具链。

阅读全文 »

深入探索并发编程系列(八)-Acquire与Release语义

发表于 2016-09-28   |   分类于 High-performance   |  

一般来说,在无锁(lock-free)注1编程中,线程有两种方法来操作共享内存:线程间相互竞争一种资源或者相互合作传递消息。Acquire与Release语义对后者来说很关键:保证在线程间可靠地相互传递消息。实际上,我大胆地猜测,不正确的或者缺乏Acquire与Release语义是导致无锁编程产生错误的最常见 原因。

阅读全文 »

深入探索并发编程系列(七)-内存屏障:资源控制操作

发表于 2016-09-19   |   分类于 High-performance   |  

当你使用资源控制时, 那么你肯定在试图理解内存执行顺序。不管你是用C,C++还是其它语言,这都是在编写无锁(lock-free)代码时需要重点考虑的。

阅读全文 »

深入探索并发编程系列(六)-编译期间内存乱序

发表于 2016-09-05   |   分类于 High-performance   |  

写在最前:掌握并发编程非常困难,除了多读书、多写代码、多调试、多和朋友讨论,别无他法。

阅读全文 »

深入探索并发编程系列(五)-将内存乱序逮个正着

发表于 2016-08-11   |   分类于 High-performance   |  

当用C/C++编写无锁代码时,一定要小心谨慎,以保证正确的内存顺序。不然的话,会发生一些诡异的事情。

阅读全文 »

深入探索并发编程系列(四)-实现递归锁

发表于 2016-07-11   |   分类于 High-performance   |  

当你要为多CPU核优化代码时,有时需要去实现一种新的同步原语。
虽然我不鼓励这么做,但这样的情况却时常发生。就在你打算开始这么做的时候,可能会先找一些例子来参考。这种过程无疑是搬起石头砸自己的脚,但却能减少你再次犯这种错误的次数,这样起码还能给你留下几个脚趾头继续走路。

阅读全文 »

深入探索并发编程系列(三)-自己动手实现轻量级锁

发表于 2016-07-04   |   分类于 High-performance   |  

在上一篇文章中,我强调了使用轻量级锁的重要性。还提到如果你能容忍某些弊端的话,自己动手实现轻量级锁也是可以的。

阅读全文 »

深入探索并发编程系列(二)-总是使用轻量级锁

发表于 2016-06-27   |   分类于 High-performance   |  

在多线程编程中,我们会常说起锁(也叫互斥量)。但锁仅仅是个概念,要真正用上锁,需要将其实现。事实证明,存在许多实现锁的方法,不同方法在性能表现上却有很大的区别。

阅读全文 »

深入探索并发编程系列(一)-锁不慢;锁竞争慢

发表于 2016-06-20   |   分类于 High-performance   |  

锁(也叫互斥量)在很长一段时间都被误解了。1986年,在Usenet的有关于多线程的讨论会中,Matthew Dillon说过:大多数人都对锁有个误解,认为锁是慢的。25年后,这种误解似乎在某一时间段又突然出现了。

阅读全文 »
Obsolete

Obsolete

11 日志
1 分类
RSS
微博
Links
  • yebangyu
  • wangli
  • dukewei
  • armsword
© 2015 - 2017 Obsolete