Thread.SpinWait(Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Provoque l’attente d’un thread au nombre de fois défini par le iterations paramètre.
public:
static void SpinWait(int iterations);
public static void SpinWait(int iterations);
static member SpinWait : int -> unit
Public Shared Sub SpinWait (iterations As Integer)
Paramètres
- iterations
- Int32
Entier signé 32 bits qui définit la durée d’attente d’un thread.
Remarques
La SpinWait méthode est utile pour implémenter des verrous. Les classes du framework .NET, telles que Monitor et ReaderWriterLock, utilisent cette méthode en interne.
SpinWait place essentiellement le processeur dans une boucle très serrée, avec le nombre de boucles spécifié par le iterations paramètre. La durée de l’attente dépend donc de la vitesse du processeur.
Contrastez-le avec la Sleep méthode. Un thread qui appelle Sleep génère le reste de sa tranche actuelle de temps processeur, même si l’intervalle spécifié est égal à zéro. La spécification d’un intervalle différent de zéro pour Sleep supprimer le thread de la considération par le planificateur de threads jusqu’à ce que l’intervalle de temps soit écoulé.
SpinWait n’est généralement pas utile pour les applications ordinaires. Dans la plupart des cas, vous devez utiliser les classes de synchronisation fournies par l’infrastructure .NET ; par exemple, appeler Monitor.Enter ou une instruction qui encapsule Monitor.Enter (lock en C# ou SyncLock dans Visual Basic).
Avertissement
Dans les rares cas où il est avantageux d’éviter un changement de contexte, par exemple quand vous savez qu’une modification d’état est imminente, effectuez un appel à la SpinWait méthode dans votre boucle. Le code SpinWait s’exécute pour éviter les problèmes qui peuvent se produire sur des ordinateurs avec plusieurs processeurs. Par exemple, sur les ordinateurs dotés de plusieurs processeurs Intel utilisant Hyper-Threading technologie, SpinWait empêche la faim du processeur dans certaines situations.