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 censés être courts et lorsque la contention est minimale, SpinLock peut fonctionner mieux que d’autres types de verrous. Toutefois, nous vous recommandons d’utiliser SpinLock uniquement lorsque vous déterminez en profilage que la System.Threading.Monitor méthode ou les 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 SpinLockthread, assurez-vous qu’aucun thread ne peut contenir le verrou pendant plus d’un court intervalle de temps et qu’aucun thread ne peut bloquer pendant qu’il contient 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, consultez System.Threading.SpinLock. Pour obtenir un exemple, consultez How to : Use SpinLock for Low-Level Synchronization.

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 de publication de votre programme, car il peut ralentir les performances. Pour plus d’informations, consultez How to : Enable Thread-Tracking Mode in SpinLock.

Voir aussi