Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 14970|Répondre: 3

[Source] [Combat réel]. NET/C# utilise SemaphoreSlim pour limiter les méthodes d’exécution concurrentes

[Copié le lien]
Publié sur 19/02/2022 21:23:20 | | | |
Exigences : En raison des ressources matérielles limitées, le programme doit consommer une certaine quantité de ressources matérielles ; en cas de forte concurrence, si certaines méthodes qui consomment trop de ressources du programme ne sont pas limitées (exportant une grande quantité de données dans une table Excel), cela peut affecter l’incapacité de l’ensemble du programme à fournir des services normaux, et aussi affecter le fonctionnement normal du système d’exploitation.

Sémaphore et sémaphore Différence mince

SemaphoreSlim et Semaphore sont similaires en termes de fonctionnalités. SemaphoreSlim est environ 4 fois plus rapide que Semaphore, mais SemaphoreSlim ne peut pas être utilisé pour la signalisation interprocessus.

La raison de cette amélioration de performance est que la classe SemaphoreSlim offre une alternative légère à la classe Semaphore, qui n’utilise pas le sémaphore du noyau Windows. En gros, si vous n’avez pas besoin de nommer des sémaphores, utilisez la classe SemaphoreSlim.

SemaphoreSlim est basé sur SpinWait et Monitor, donc un thread en attente d’obtenir un verrouillage consomme une période de cycles CPU, espérant obtenir le verrouillage avant de céder la place à un autre thread. Si cela ne se produit pas, alors le thread laisse le système changer de contexte et réessayer lorsque le système d’exploitation planifie à nouveau ce thread (en consommant quelques cycles CPU). Si l’attente est longue, ce mode peut consommer beaucoup de cycles CPU. Le meilleur scénario pour cette implémentation est que la plupart du temps, il n’y a pas de délai d’attente et que vous pouvez obtenir le verrou presque immédiatement.
Le sémaphore repose sur des implémentations dans le noyau du système d’exploitation, donc chaque fois qu’un verrou est acquis, cela prend pas mal de cycles CPU, mais après cela le thread hiberne simplement pour obtenir le temps nécessaire à obtenir le verrouillage.

Documentation du sémaphore :https://docs.microsoft.com/en-us ... aphore?view=net-6.0
Documentation de SemaphoreSlim :https://docs.microsoft.com/en-us ... reslim?view=net-6.0

Avant d’exécuter la méthode, les méthodes d’attente couramment utilisées sont les suivantesAppelez en fonction de la situation réelle de votre entreprise

Wait() : Bloque le thread jusqu’à ce qu’il puisse entrer dans SemaphoreSlim.
Attends(0) : La méthode ne sera pas bloquée. Il testera l’état de la poignée en attente et reviendra immédiatement.
Attendez : Bloque le thread courant jusqu’à ce qu’il puisse entrer dans SemaphoreSlim, tout en spécifiant un délai d’attente à l’aide d’un entier signé 32 bits.

Le code source est le suivant :

Les rendus sont les suivants :







Précédent:Connexion sans secret (ssh) ou copie sans secret (scp) Linux vers d’autres serveurs
Prochain:Linux utilise lookbusy pour simuler l’utilisation du processeur
Publié sur 19/02/2022 23:16:57 |
Apprends à apprendre...
Publié sur 20/02/2022 22:19:24 |
test
 Propriétaire| Publié sur 18/12/2024 20:40:10 |
La différence entre ManualResetEvent et AutoResetEvent appris par les threads C#
https://www.itsvse.com/thread-4810-1-1.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com