1.6的解释已经很多了,昨天本来做好的文章就不忍拿出来献丑了这篇链接就不错http://www.infoq.com/cn/articles/ConcurrentHashMap 本文就简单叙述1.7的更改部分.1:最明显的,采用了尝试自旋锁的机制(多核情况下尝试自旋64次(ps:put的时候,自旋会预...
分类:
其他好文 时间:
2015-07-11 16:41:16
阅读次数:
211
【JVM锁优化:http://www.importnew.com/15340.html】【自旋锁】互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。而在很多应用上, 共享数据的锁定状态只会持续很短的一段时间。若实体机上有多...
分类:
其他好文 时间:
2015-07-09 00:34:17
阅读次数:
120
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/原子操作(atomic): 通过在汇编操作码前缀加个lock(0xf0)来给内存总线上锁(其他CPU无法访问这个内存单元),直到这条指令完成。atomic_t类型为volatile int。自旋锁(spinl...
分类:
其他好文 时间:
2015-07-06 14:07:09
阅读次数:
146
所谓的锁陷阱就是防止死锁。
不明确的规则:
1、不论是信号量还是 自旋锁,都不允许锁拥有者第二次获得这个锁(会死锁)。
2、系统直接调用的那些函数要获得信号量,保护要访问的设备结构。而内部函数的访问则可以根据需要上锁。
锁顺序规则:
1、如果都要获取一系列锁的话,那么可以按照一定顺序规则来获取锁,即:获取多个锁时,锁的顺序一直;
2、如果要获取自己的局部锁和系统的中心锁,则先获取自己的局部锁,然后再去获取中心锁...
分类:
系统相关 时间:
2015-07-05 15:08:01
阅读次数:
183
摘要:并发控制,是多任务操作系统必须面临和解决的一个问题。并发与互斥,主要是用于保护临界资源,如果不站在操作系统进程调度的角度,就很难理解并发与互斥的概念和应用。无论是抢占式操作系统,还是分时操作系统,对于临界资源的保护,都必须采用互斥的机制。Linux内核中,有多种并发控制的机制:自旋锁、原子变量、信号量、读写锁等等。不同的并发机制对应于不同的应用场合,比如说,自旋锁可以应用到中断处理函数中,信号量则不可以。本文主要从一个globalmem_lock例子来阐述信号量的使用。注:该例子取自《Linux设备驱...
分类:
系统相关 时间:
2015-06-16 09:17:54
阅读次数:
263
话说量子里面轨道角动量是个很有用的东西,其实自己还不是完全很懂,菜鸟中的菜鸟级别。目前普遍认为角动量分成自旋角动量和轨道角动量,是一个量子态,一般情况下我们把它加载量子信息里面光子的偏振态,相位,频率的等物理量。一般地任何光子都有线性角动量,大小和频率有关,频率越高线性角动量越高;而自旋角动量和圆偏...
分类:
其他好文 时间:
2015-06-12 13:18:21
阅读次数:
120
用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费..
分类:
其他好文 时间:
2015-06-08 15:19:27
阅读次数:
218
原子操作
原子操作就是单位操作,也就是说操作过程不能被中断
下面代码中每条语句看起来是原子操作,其实不是原子操作;
int main(0
{
int i=2;//两天汇编语句组成
i=i+3;//三条汇编语句组成
}
实现原子操作方法;
1 自旋锁
自旋锁它是为为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似
,它们都是为了解决对某项资源的互斥...
分类:
系统相关 时间:
2015-05-28 10:53:52
阅读次数:
269
1、互斥锁原理
在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。可以保证以下三点:
(1)原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果一个线程锁定了一个互斥量,没有其他线程在同一时间可以成功锁定这个互斥量。
(2)唯一性:如果一个线程锁定了一个互斥量,在它解除锁...
分类:
其他好文 时间:
2015-05-21 22:42:10
阅读次数:
178