阅读:1885回复:7
spin_lock与mutex的区别
一直搞不清楚,问问大家。
|
|
沙发#
发布于:2003-12-31 17:45
DDK有啊~_~
|
|
板凳#
发布于:2003-12-31 17:48
有么,有spin_lock和mutex的比较么?spin_lock感觉和mutex差不多,不过就是时间有限制
|
|
地板#
发布于:2003-12-31 19:23
1. spinlock之所以叫spinlock就因为它是忙等,不会阻塞系统对忙等线程的调度(就是说线程总是ready的,只要不发生抢占,则该线程会占着CPU不放)。而mutex不是,它会系统阻塞请求线程(如果mutex的现行属主不释放它,别的请求线程的调度状态都是wait)。
2. spinlock请求成功之后,CPU的执行级别会提升到DL,mutex不会。 3. DL及以下级别都可以请求spinlock。mutex只能在PL请求(除非timeout=0且锁空间在NonPagedPool里分配,实际上就是ReadState操作)。 4. 最重要的,spinlock是“非递归锁”,而mutex是“递归锁”。 5. 再想想... ... |
|
|
地下室#
发布于:2003-12-31 21:33
I see, thank you very much.
|
|
5楼#
发布于:2004-01-03 22:53
精辟!
|
|
6楼#
发布于:2004-01-06 21:44
还有SPIN_LOCK 可用于多CPU。。
|
|
7楼#
发布于:2004-01-09 09:08
还有SPIN_LOCK 可用于多CPU。。 主要用于多cpu环境 |
|
|