当前位置: 技术问答>自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
iis7站长之家
自旋锁的问题
来源: 互联网 发布时间:2015-12-15
本文导语: 自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用(已经被持有)的自旋锁,那么该线程就会一直进行忙循环——旋转——等待锁重新可用 那么它会一直占据CPU,那么靠谁来将锁释放呢...
自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用(已经被持有)的自旋锁,那么该线程就会一直进行忙循环——旋转——等待锁重新可用
那么它会一直占据CPU,那么靠谁来将锁释放呢?
其他CPU,还是硬件中断
那么它会一直占据CPU,那么靠谁来将锁释放呢?
其他CPU,还是硬件中断
|
自旋锁spinlock是用来在多处理器环境中工作的一种特殊的锁。如果内核的控制路径发现spinlock没有上锁,就会获取锁并继续执行自己。相反,如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径上锁,就反复执行一条紧凑的循环指令,直到锁被释放。
请参考Understanding the Linux Kernel的第五章。
请参考Understanding the Linux Kernel的第五章。
|
xmmx123(myfish) ( ) 信誉:100 Blog 2006-09-20 00:27:00 得分: 0
你是说 自旋的线程 在时间片耗尽后让出CPU?
自旋锁 的意义不是在于 不想耗费进程切换的时间吗?
线程自旋过程中,一直占据CPU,除非其他CPU将锁释放吧,可不可以说自旋锁只针对多CPU呢?
===========================================
对,自旋锁仅仅对MP有效果,Linux中UP的话展开spin_lock就会是空操作。
你是说 自旋的线程 在时间片耗尽后让出CPU?
自旋锁 的意义不是在于 不想耗费进程切换的时间吗?
线程自旋过程中,一直占据CPU,除非其他CPU将锁释放吧,可不可以说自旋锁只针对多CPU呢?
===========================================
对,自旋锁仅仅对MP有效果,Linux中UP的话展开spin_lock就会是空操作。