lesson3
来源:互联网 发布:大连网店美工招聘 编辑:程序博客网 时间:2024/04/29 04:05
自旋锁还是不理解
- static inlinevoid __raw_spin_lock(raw_spinlock_t *lock)
- {
- asm volatile("\n1:\t"
- LOCK_PREFIX " ; decb %0\n\t"
- "jns 3f\n"
- "2:\t"
- "rep;nop\n\t"
- "cmpb $0,%0\n\t"
- "jle 2b\n\t"
- "jmp 1b\n"
- "3:\n\t"
- : "+m" (lock->slock) : :"memory");
line 4: 对lock->slock自减,这个操作是互斥的,LOCK_PREFIX保证了此刻只能有一个CPU访问内存
line 5: 判断lock->slock是否为非负数,如果是跳转到3,即获得自旋锁
line 6: 位置符
line 7: lock->slock此时为负数,说明已经被其他cpu抢占了,cpu休息一会,相当于pause指令
line 8: 继续将lock->slock和0比较,
line 9: 判断lock->slock是否小于等于0,如果判断为真,跳转到2,继续休息
line 10: 此时lock->slock已经大于0,可以继续尝试抢占了,跳转到
如何起到自旋等待的作用?
- lesson3
- lesson3
- LESSON3
- LogicJava---Lesson3
- csdnsS2-lesson3
- Lesson3 MFC应用程序框架
- 孙鑫VC++Lesson3
- lesson3 NetWork (02.19)
- 黑马程序员-lesson3
- XML 自学笔记 Lesson3
- lesson3 运算符
- 定义泛型类 lesson3
- Lesson3: 简单绘图
- C语言Lesson3
- html/css知识lesson3
- 阿甘学java视频--lesson3
- Lesson3.2 variables
- Arduino接口-week1-Lesson3
- HDU 3714 Error Curves
- singleton设计模式,c++实现
- 这都多长时间了?
- CODE128B码在PB10中的实现
- 基本网络命令学习
- lesson3
- HDU 3711 Binary Number
- 面试应该注意的地方
- Struts2获得session和request
- UML类图设计
- java项目如何打成jar包
- C++类和接口的设计原则探讨
- lesson4
- 在VC中使用自定义资源,FindResource,LoadResource,LockResource