Lorsqu'un mutex est déjà verrouillé par T1 et que T2 tente de le verrouiller, quel est le processus pour T2?Implémentation et signalisation Mutex
Je pense qu'il ressemble à ceci:
-T2 essaie de verrouiller, échoue, spinlocks peut-être un peu, puis appelle le rendement ...
-T2 est prévu pour l'exécution d'une ou deux fois, essaie de verrouiller tombe en panne, les rendements ...
-Finalement T1 déverrouille, T2 doit être exécuté et parvient à verrouiller le mutex ...
-t-T1 déverrouillage signalent explicitement au programmateur ou d'autres fils que le mutex est déverrouillé? Ou tout simplement déverrouiller, et laisser le planificateur de planifier des threads bloqués quand il le juge approprié (aka scheduler n'a aucune notion de threads bloqués et ne les traite pas comme spéciaux)?
Je pense que le principe d'exclusion mutuelle garantit qu'aucun 2 threads ou plus ne pénètrent dans la section critique en même temps. Maintenant, si vous avez une file d'attente pour les threads qui tentent de verrouiller le mutex ou si vous faites juste un busy, attendez qu'un mutex soit libre dépend de la façon dont vous l'implémentez et quels sont vos besoins en mutex. Par exemple, 'mutex' dans RTOS comme VxWorks implémente le protocole de plafond prioritaire, dont vous n'avez pas besoin dans le système d'exploitation généraliste (GPOS). – Raj