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 pendant le nombre de fois défini par le paramètre iterations
.
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 le temps pendant lequel un thread doit attendre.
Remarques
La SpinWait méthode est utile pour implémenter des verrous. Les classes du .NET Framework, telles que Monitor et ReaderWriterLock, utilisent cette méthode en interne.
SpinWait place essentiellement le processeur dans une boucle très étroite, 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.
Comparez cela à 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 autre que zéro pour Sleep supprime le thread de la prise en compte par le planificateur de thread 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 .NET Framework ; par exemple, appel Monitor.Enter ou instruction qui encapsule Monitor.Enter (lock
en C# ou SyncLock
en Visual Basic).
Attention
Dans les rares cas où il est avantageux d’éviter un changement de contexte, par exemple quand vous savez qu’un changement d’état est imminent, effectuez un appel à la SpinWait méthode dans votre boucle. Le code SpinWait s’exécute est conçu 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 famine du processeur dans certaines situations.