posts - 28,  comments - 15,  trackbacks - 0

我的评论

re: Mysql索引相关知识分享 zhangxl 2014-05-09 09:55  
@金利锁业
这个公司内部分享,个人觉得都大多数开发者来说具有参考价值
@xylz
这里的模拟都使用了synchronized(内在锁)关键字,模拟CAS还有什么意义呢?引入CAS的目的不就是为了较少锁的竞争,提高多线程并发的吞吐率吗?
我觉得要模拟也应该像AQS那样,比如,这是AQS的源码中状态变量的原子操作:

A.Q.S里面包含了一个存储同步状态的变量,它的声明如下:

private volatile int state;

这里采用了volatile修饰符的原因是为了保证对state变量的写对所有的线程都是可见的。但是大家都知道,volatile只能保证变量的可见性,不能保证对变量操作的原子性,所以A.Q.S里面就采用了CAS(Compare And Swap)操作来更新state变量的值,代码如下:

protected final boolean compareAndSetState(int expect, int update)
{ // See below for intrinsics setup to support this
return unsafe.compareAndSwapInt(this, stateOffset, expect, update); }


个人觉得这样才能模拟出CAS的本质,原子特性。
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(1)

随笔分类(17)

随笔档案(28)

文章分类(30)

文章档案(30)

相册

收藏夹(2)

hibernate

java基础

mysql

xml

关注

压力测试

算法

最新随笔

搜索

  •  

积分与排名

  • 积分 - 95541
  • 排名 - 602

最新评论

阅读排行榜

评论排行榜