摘要:
前面两篇文章,介绍的锁机制都是可用于可睡眠的线程中,但是自旋锁可以用于中断上下文中,因为他是不可睡眠的锁。自旋锁用于中断上下文,不能用于进程上下文,它是不可睡眠的锁,该进程若有睡眠,就不能使用该锁,因为会发生死锁。在内核中,自旋锁机制是如果当前可获得自旋锁则代码进入临界区,如果当前锁不可获得,则代码进入忙循环中并时刻检查该锁,知道锁可用。所以这个忙循环就是自旋锁的“自旋”部分。1、头文件:include/linux/spinlock.h结构体:spinlock_t lock;2、定义及其初始化自旋锁:277 #define spin_lock_init(_lock) ... 阅读全文
posted @ 2013-04-01 20:29
metootxy
阅读(1295)
评论(0)
推荐(0)
摘要:
前一篇文章讲的是completion信号量,该机制不能用于中断上下文中,因为该锁可睡眠。接下来,介绍的锁机制也是一个可以睡眠的锁——互斥锁,所以该锁也不能用于中断上下文中;1、头文件:include/linux/mutex.h结构体: 48 struct mutex { 49 /* 1: unlocked, 0: locked, negative: locked, possible waiters */ 50 atomic_t count; 51 spinlock_t wait_lock; ... 阅读全文
posted @ 2013-04-01 19:48
metootxy
阅读(678)
评论(0)
推荐(0)
摘要:
在linux内核中,引入锁机制主要是解决资源并发与竞争问题;主要常用锁机制:信号量,自旋锁,互斥锁;该篇文章主要讲解的是completion信号量。(1)completion信号量:completion信号量是一个轻量级的机制,它允许一个线程告诉另一个线程某个工作已经做完了;1、头文件:include/linux/completion.h结构体:1 25 struct completion {2 26 unsigned int done;3 27 wait_queue_head_t wait;4 28 };5 29 2、定义及其初始化一个信号量:静态定... 阅读全文
posted @ 2013-04-01 19:40
metootxy
阅读(4539)
评论(0)
推荐(0)
摘要:
第一次,来到cnblog这个大家园,现在开始记录我的一切吧!只要朝着太阳的方向,不断努力,就会有新的希望所以真善美,metootxy加油哦!!! 阅读全文
posted @ 2013-04-01 18:53
metootxy
阅读(96)
评论(0)
推荐(0)
浙公网安备 33010602011771号