Partager via


SpinLock

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

SpinLock peut rapporter la tranche horaire du thread même s'il n'a pas encore acquis le verrou. Il effectue cette opération pour éviter toute inversion de priorité de thread et permettre au garbage collector de poursuivre la progression. Lorsque vous utilisez un SpinLock, vérifiez qu'aucun thread ne peut détenir le verrou au-delà d'un intervalle de temps très bref et qu'aucun thread ne peut se 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 prévoyez 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 Comment : utiliser le verrouillage spinlock pour une synchronisation de bas niveau.

SpinLock prend en charge un mode de suivi de threads que vous pouvez utiliser pendant la phase de développement pour suivre le thread qui détient le verrou à un moment particulier. Le mode de suivi de threads est très utile pour le débogage, mais nous vous recommandons de le désactiver dans la version Release de votre programme étant donné qu'il peut entraîner un ralentissement des performances. Pour plus d'informations, consultez Comment : activer le mode de suivi des threads dans le verrouillage Spinlock.

Voir aussi

Autres ressources

Fonctionnalités et objets de threading