0. 前言 前段时间在看无锁队列相关的东西时发现了一篇关于加锁队列算法优化的文章,故看了下其原理以及使用C实现了该队列。该队列在Java中类LinkedBlockingQueue以及实现了该功能。 相关文章:Simple, Fast, and Practical Non-Blocking and.....
分类:
编程语言 时间:
2015-12-22 19:31:56
阅读次数:
225
环形无锁队列环形无锁队列Table of Contents1 环形无锁队列的实现2 死锁及饥饿3 一些优化1 环形无锁队列的实现数据结构定义:template class LockFreeQueue{ private: ElementT *mArray; int mCapacity; ...
分类:
其他好文 时间:
2015-12-02 00:57:08
阅读次数:
178
Java对象的分配,根据其过程,将其分为快速分配和慢速分配两种形式,其中快速分配使用无锁的指针碰撞技术在新生代的Eden区上进行分配,而慢速分配根据堆的实现方式、GC的实现方式、代的实现方式不同而具有不同的分配调用层次。下面就以bytecodeInterpreter解释器对于new指令的解释出发.....
分类:
编程语言 时间:
2015-11-16 10:36:54
阅读次数:
205
在程序设计中,我们有时会遇到这样的情况,一个线程将数据写到一个buffer中,另外一个线程从中读数据。所以这里就有多线程竞争的问题。通常的解决办法是对竞争资源加锁。但是,一般加锁的损耗较高。其实,对于这样的一个线程写,一个线程读的特殊情况,可以以一种简单的无锁RingBuffer来实现。这样代码的运...
分类:
编程语言 时间:
2015-11-08 14:05:26
阅读次数:
259
templateclass LockFreeStack{private: struct Node; struct CountedNode { int externalCount = 0; Node* ptr = nullp...
分类:
其他好文 时间:
2015-10-05 07:00:10
阅读次数:
192
CAS原子操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。 大家应该还记得操作系统里面关于“原子操作”的概念,一个操作是原子的(atom...
分类:
其他好文 时间:
2015-10-04 01:38:21
阅读次数:
218
constexpr size_t maxHazardPointers = 100;struct HazardPointer{ std::atomic id; std::atomic pointer;};array hazardPointers;class Hazard...
分类:
其他好文 时间:
2015-10-03 16:55:03
阅读次数:
328
templateclass LockFreeStack{private: struct Node { std::shared_ptr data; Node* next; Node(T const& value): ...
分类:
其他好文 时间:
2015-09-30 10:58:05
阅读次数:
165
http://ifeve.com/java-atomic/Java中的Atomic包使用指南本文首发于并发网,作者:方腾飞引言Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原 子变量的底层使用了处理器提供的原子...
分类:
编程语言 时间:
2015-09-30 10:55:05
阅读次数:
219
转自:http://coolshell.cn/articles/8239.html关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一...
分类:
其他好文 时间:
2015-09-15 12:45:24
阅读次数:
439