Partage via


Thread.SpinWait(Int32) Méthode

Définition

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.

S’applique à