全部博文(512)
分类: C/C++
2010-04-15 11:52:43
chinaunix网友2011-07-06 13:59:51
参考下这个列子。 注意64位环境要用cmpxchg16b
#ifndef __LOCK_FREE_QUEUE_HPP__
#define __LOCK_FREE_QUEUE_HPP__
#include
chinaunix网友2010-05-30 09:49:29
lockfree的本质是乐观锁。也就是说,它假设多数情况下,别人不会改变。一个通用的lockfree算法可描述如下: lockfree_modify(DataT* data) { for (;;) { Save old state of data to a local variable; do modify; lock { if (current state == old state) commit modify & return; } } } 可以看出,lockfree也是锁,只是将锁限制在一个最小的范围内(通常是一个原子操作)。由于仍然有锁,lockfree在多核下并不会比普通的锁高明多少,它也不能随cpu个数增加而获得呈线性scale的性能提升。 不过,lockfree有个最大的好处,就是不可能有死锁。因为对上面算法分析你可以知道,在某个线程modify失败,总意味着有另一个人成功了,
chinaunix网友2010-05-05 14:48:08
#include