Partager via


SpinLock

La structure SpinLock est une primitive de synchronisation de bas niveau à exclusion mutuelle qui tourne en attendant d’acquérir un verrou. Sur les ordinateurs multicœurs, lorsque les temps d’attente sont supposés être courts et que la contention est minimale, SpinLock peut être plus performant que d’autres types de verrous. Toutefois, nous vous recommandons d’utiliser SpinLock uniquement lorsque vous déterminez par profilage que la System.Threading.Monitor méthode ou Interlocked méthodes ralentissent considérablement les performances de votre programme.

SpinLock maîtrise la tranche horaire du thread même si elle n’a pas encore acquis le verrou. Il procède ainsi pour éviter une inversion de priorité du thread et permettre au récupérateur de mémoire de progresser. Lorsque vous utilisez un SpinLock, vérifiez qu’aucun thread ne peut contenir le verrou au-delà d’un intervalle de temps très court, et qu’aucun thread ne peut bloquer pendant qu’il détient le verrou.

Étant donné que le verrouillage SpinLock est un type valeur, vous devez le passer explicitement par référence si vous envisagez que les deux copies fassent référence au même verrou.

Pour plus d'informations sur l'utilisation de ce type, voir System.Threading.SpinLock. Pour voir un exemple, consultez Guide pratique pour utiliser le verrouillage SpinLock pour une synchronisation de bas niveau.

SpinLock prend en charge un mode de suivi-des threads que vous pouvez utiliser pendant la phase de développement pour aider à suivre le thread qui détient le verrou à un moment donné. Le mode de suivi des threads est très utile pour le débogage, mais nous vous recommandons de le désactiver dans la version finale de votre programme, car il peut ralentir les performances. Pour plus d’informations, voir Guide pratique pour activer le Mode de suivi des threads dans le verrouillage SpinLock.

Voir aussi