自旋锁使用的注意点
来源:互联网 发布:淘宝付款人数多久更新 编辑:程序博客网 时间:2024/05/16 14:12
1. 自旋锁保护的临界区里,不能有引起睡眠的函数,如kmalloc,copy_from_user等。
因为如果某进(线)程获得锁并进入了临界区,但它却在临界区里睡着了,那么别的需要这把锁的进(线)程将可能要等待一段很久的时间,最坏的情况是死锁。
所以,在自旋锁里的临界区代码应是原子性的,不可睡眠的。
2. 在LDD3里说到这样的一种情况: 在单CPU环境里,如果某进(线)程获得了锁并准备对它的设备进行存取,此时发生了中断,而中断处理也要对该设备进行存取所以中断处理程序也要获得那个锁,但现在锁被刚才某进(线)程得了,所以当中继处理程序在自旋,而在单CPU环境里, 非中断代码又不能运行来释放锁,那么这个CPU将永远自旋。
3. 自旋锁的持有时间应尽可能的短。因为临界区太大,持有时间太长,其他进程可能面临长时间等待,降低了系统性能。
- 自旋锁使用的注意点
- 自旋锁的使用
- 自旋锁的使用spin_lock
- 迭代器使用的注意点
- 使用SqlDataReader的注意点
- 使用memset的注意点
- 使用Hive的注意点
- NSLocalNotification的使用注意点
- 使用继承的注意点
- 使用Knockout的注意点
- goto 的使用注意点
- SimpleDateFormat 的使用注意点
- popupwindow的使用注意点
- 点语法的使用注意
- 使用继承的注意点
- 多线程的使用注意点
- hibernate的使用注意点
- 使用printk的注意点
- IE/FireFox/Chrome 取style.backgroundColor 兼容性问题
- POJ 3270 Cow Sorting(置换循环节)
- 学习步骤?(copy过来的)
- iOS开发之多媒体
- Android入门/ImageSwitcher(十四)
- 自旋锁使用的注意点
- Weblogic 12c 运行使用Slf4j日志框架应用解决方案
- 尝试用%s输出空指针
- Ubuntu 12.04 LTS编译安装emacs
- OPENSSL VS环境下源码调试
- 如何在多个移动平台上创建新的cocos2d-x项目
- 根据今天的日期或者传入的日期得到本日所在周的开始日期和结束日期
- hibernate的session.save/persisten方法的区别
- 名人女儿不好当 迈克尔·戴尔女儿删推特