自旋锁是一个互斥设备,它只有两个值:“锁定”和“解锁”。它通常实现为某个整数值中的某个位。希望获得某个特定锁得代码测试相关的位。如果锁可用,则“锁定”被设置,而代码继续进入临界区;相反,如果锁被其他人获得,则代码进入忙循环(而不是休眠,这也是自旋锁和一般锁的区别)并重复检查这个锁,直到该锁可用为止,...
分类:
其他好文 时间:
2014-09-13 22:41:36
阅读次数:
203
阻塞
非竞争的同步可以完全在JVM中处理,竞争的同步则可能需要操作系统的介入,从而增加开销。当在锁上发生竞争时,竞争失败的线程肯定会阻塞。JVM在实现阻塞行为时,可以采用自旋等待,就是通过循环不断的尝试获取锁。直到成功。或者通过操作系统挂起被阻塞的线程。这两种方式的效率高低取决于上下文切换的开销以及在成功获取锁之前需要等待的时间。如果等待时间较短,采用自旋等待的方式,如果时间较长,则采用操作系统...
分类:
编程语言 时间:
2014-09-10 22:30:41
阅读次数:
230
悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题;而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后不成功。这就是悲观锁与乐观锁的区别,悲观锁会把整个对象加锁占为自有后才去做操作,乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据。这一节将对乐观锁进行深入探讨。
上节讨论的Synchr...
分类:
其他好文 时间:
2014-09-09 21:38:29
阅读次数:
330
互斥锁、信号量、自旋锁http://www.cnblogs.com/biyeymyhjob/archive/2012/07/21/2602015.htmllinux用户空间机制:1. 互斥量 pthread互斥接口,确保同一时间只有一个线程访问数据 本质是锁 pthread_mutex_t ...
分类:
系统相关 时间:
2014-08-22 19:40:19
阅读次数:
352
获得自旋锁和释放自旋锁有好几个版本,因此让读者知道在什么样的情况下使用什么版本的获得和释放锁的宏是非常必要的。 如果被保护的共享资源只在进程上下文访问和软中断(包括tasklet、timer)上下文访问,...
分类:
其他好文 时间:
2014-08-18 09:22:44
阅读次数:
280
SpinLock 自旋锁spinlock 用于CPU同步, 它的实现是基于CPU锁定数据总线的指令.当某个CPU锁住数据总线后, 它读一个内存单元(spinlock_t)来判断这个spinlock 是否已经被别的CPU锁住.如果否, 它写进一个特定值, 表示锁定成功, 然后返回.如果是, 它会重复以...
分类:
其他好文 时间:
2014-08-17 01:04:11
阅读次数:
335
自旋锁和相互排斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源,以阻止影响数据一致性的并发訪问。可是他们之间确实存在差别,那么这些差别是什么?1理论理论上,当一个线程试图获取一个被锁定的相互排斥锁时,该操作会失败然后该线程会进入睡眠,这样就能立即让还有一个线程执行。当持有相互排斥锁的线...
分类:
其他好文 时间:
2014-08-15 12:27:08
阅读次数:
190
自旋锁是SMP中经常使用到的一个锁。所谓的smp,就是对称多处理器的意思。在工业用的pcb板上面,特别是服务器上面,一个pcb板有多个cpu是 很正常的事情。这些cpu相互之间是独立运行的,每一个cpu均有自己的调度队列。然而,这些cpu在内存空间上是共享的。举个例子说,假设有一个数据 value....
分类:
编程语言 时间:
2014-08-01 19:13:52
阅读次数:
246
1、 linux驱动分类
2、 信号量与自旋锁
3、 platform总线设备及总线设备如何编写
4、 kmalloc和vmalloc的区别
5、 module_init的级别
6、 添加驱动
7、 IIC原理,总线框架,设备编写方法,i2c_msg
8、 kernel panic
9、 USB总线,USB传输种类,urb等
10、android boot 流程...
分类:
系统相关 时间:
2014-07-27 23:43:09
阅读次数:
380