在多核系统中,会存在多个CPU核竞争同一资源的情形,这就必须有一些机制来保证在竞争中不会出现错误,即同步互斥机制。这里主要针对同步互斥原语之一的自旋锁进行一点分析和记录。上图为一个多核系统的中断部分,很显然中断部分会存在许多竞争相关问题。自旋锁(Spinlock) 自旋锁是用来在多处理器环境...
分类:
其他好文 时间:
2014-10-18 16:47:22
阅读次数:
650
spinlock,mutex,semaphore,critical section的作用与区别...
分类:
其他好文 时间:
2014-10-13 12:29:39
阅读次数:
218
内核中和调试相关的选项
CONFIG_DEBUG_KERNELCONFIG_DEBUG_SLABCONFIG_DEBUG_PAGEALLOCCONFIG_DEBUG_SPINLOCKCONFIG_DEBUG_SPINLOCK_SLEEPCONFIG_INIT_DEBUGCONFIG_DEBUG_INFOCONFIG_MAGIC_SYSRQCONFIG_DEBUG_STACKOVERFLOWCONF...
分类:
系统相关 时间:
2014-09-24 13:41:36
阅读次数:
320
菜鸟学习并行编程,参考《C#并行编程高级教程.PDF》,如有错误,欢迎指正。背景有时候必须访问变量、实例、方法、属性或者结构体,而这些并没有准备好用于并发访问,或者有时候需要执行部分代码,而这些代码必须单独运行,这是不得不通过将任务分解的方式让它们独立运行。当任务和线程要访问共享的数据和资源的时候,...
分类:
编程语言 时间:
2014-09-01 17:16:03
阅读次数:
396
背景: 出现cpu高于常规的告警排查: 1.开跟踪,没有发现cup特别高的查询 2.查看内核cpu使用量,看是否是sql server 端引起 3.查看负荷,是否负荷特别高这里使用 batch request 4.全部无解,sql运行都正常,在thread,worker,task级别查看也...
分类:
其他好文 时间:
2014-08-30 01:15:58
阅读次数:
247
SpinLock 自旋锁spinlock 用于CPU同步, 它的实现是基于CPU锁定数据总线的指令.当某个CPU锁住数据总线后, 它读一个内存单元(spinlock_t)来判断这个spinlock 是否已经被别的CPU锁住.如果否, 它写进一个特定值, 表示锁定成功, 然后返回.如果是, 它会重复以...
分类:
其他好文 时间:
2014-08-17 01:04:11
阅读次数:
335
自旋锁(spinlock)与互斥锁(mutex)是并发编程中两个重要的概念。它们的主要作用是:对共享资源加锁以阻止数据的并发访问,从而保证数据一致性。但是它们也有一些不同点。本文主要介绍这些不同点,并说明我们什么时候该用自旋锁取代互斥锁。
理论基础
理论上,当一个线程尝试去获取一个互斥锁,但由于该互斥锁已经被其它线程获取而没有成功时,它会立刻进入休眠状态,从而让出CPU时间,允许其它线...
分类:
其他好文 时间:
2014-07-10 21:34:15
阅读次数:
241
五、自旋锁(spinlock)
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。
信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因...
分类:
系统相关 时间:
2014-06-15 16:34:46
阅读次数:
285
MySQL的锁: MySQL内部有很多种类的锁,按照用途不同,可以分为两类: 1.
保护内存结构的锁 server层对于线程共享的变量,基本上使用mutex,rwlock来做保护。 innodb层会增加使用spinlock自旋锁 2.
提供或者保...
分类:
数据库 时间:
2014-06-12 13:27:02
阅读次数:
293