La différence entre les mutex et les verrous de rotation


Notez la différence entre le verrouillage de rotation et le verrouillage mutex :
1 verrouillage Mutex abandonnera le processeur pendant la période d'attente (car la
préemption est interdite lors de la tentative d'obtention de $ )

 static inline void spin_lock(spinlock_t *lock)
 {
    
    
 	/*
 	 * Spin locks also need to be removed in order to eliminate all
 	 * memory barriers. They are only used by the write side anyway.
 	 */
 #ifndef NO_SYNC_SMP_MB
 	preempt_disable();
 	lock_impl_lock(&lock->internal_lock);
 #endif
 }

2 Par rapport aux verrous mutex, les verrous rotatifs réduisent la planification des threads et réduisent les coûts.

spin_lock  在单cpu 上  禁止抢占  preempt_disable 
spin_lock_irq  在单cpu 上  关本地中断   local_irq_disable    再 禁止抢占  preempt_disable

Je suppose que tu aimes

Origine blog.csdn.net/aningxiaoxixi/article/details/111023409
conseillé
Classement