Maison >développement back-end >Tutoriel C#.Net >Synchronisation des threads C#

Synchronisation des threads C#

WBOY
WBOYoriginal
2024-09-03 15:25:55492parcourir

La technique selon laquelle les ressources sont disponibles pour un seul thread à la fois sans interruption d'un autre thread jusqu'à ce que la tâche assignée au thread actuel soit terminée est appelée synchronisation en C#. En fait, n'importe quelle ressource peut être accédée par le thread pendant la durée requise dans un programme multithread et les ressources sont partagées et exécutées de manière asynchrone par les threads, ce qui est une tâche critique et peut entraîner l'arrêt du système et donc les threads doivent être exécutés de manière synchrone. et grâce à la synchronisation des threads, nous pouvons maintenir la cohérence des threads et nous assurer qu'aucun autre thread n'interfère lors de l'exécution d'un thread.

Syntaxe de la synchronisation des threads C#

La syntaxe ci-dessous de la synchronisation C#Thread est la suivante :

Thread thread_name = new Thread(method_name);
thread_name.Start();
thread_name.Join();

ou

Thread thread_name = new Thread(method_name);
thread_name.Start();
method_name()
{
lock(this)
{
//thread_name thread is executed
}
}

Où thread_name est le nom du thread et method_name est le nom de la méthode accessible par ce thread seul à partir du moment où thread_name.Start() est appelé, et thread_name.Join() attend la fin de ce thread par arrêter l'exécution de tous les autres threads.

Mot-clé Lock dans la méthode, nom_méthode verrouille l'exécution du thread afin qu'aucun autre thread ne puisse accéder à la méthode jusqu'à la fin du thread en cours.

Fonctions de synchronisation des threads C#

  • N'importe quelle ressource est accessible par le thread pendant la durée requise dans un programme multithreading mais si plusieurs threads tentent d'accéder à la même ressource, le partage des ressources par plusieurs threads à la fois ou de manière asynchrone devient une tâche critique et le système peut arrêter l'exécution.
  • Pour pallier ce problème, la synchronisation des threads est nécessaire. Par synchronisation du thread, seul ce thread particulier peut avoir accès à la ressource pendant un certain temps sans aucune interruption de la part des autres threads.
  • La synchronisation des fils de discussion peut être effectuée à l'aide du mot-clé join et du mot-clé lock.
  • Lorsque le mot-clé join est utilisé sur un thread, le thread est autorisé à terminer son exécution sans l'interruption des autres threads.
  • Lorsque le mot-clé lock est utilisé, la ressource sur laquelle le thread s'exécute est verrouillée jusqu'à ce que le thread termine son exécution.

Exemples d'implémentation de la synchronisation des threads C#

Vous trouverez ci-dessous des exemples de synchronisation de threads C# :

Exemple n°1

Programme C# pour démontrer la synchronisation des threads à l'aide du mot-clé join.

Code :

using System;
using System.Threading;
//a namespace called program is created
namespace program
{
//a class called check is defined
class check
{
//main method is called
static void Main(string[] args)
{
//an instance of the thread class is created which operates on a method
Thread firstthread = new Thread(secondfunction);
//start method is used to begin the execution of the thread
firstthread.Start();
//join method stops all other threads while the current thread is executing
firstthread.Join();
Thread secondthread = new Thread(firstfunction);
secondthread.Start();
secondthread.Join();
}
private static void firstfunction(object obj)
{
for(inti=1;i<3;i++)
{
Console.WriteLine("First function is executed two times in a row because join method is called on the second thread operating on this method.");
}
}
private static void secondfunction(object obj)
{
for(inti=1;i<3;i++)
{
Console.WriteLine("Second function is executed two times in a row because join method is called on the first thread operating on this method.");
}
}
}
}

Sortie :

Synchronisation des threads C#

Explication : Dans le programme ci-dessus, un espace de noms appelé programme est créé. Ensuite, une classe appelée check est définie dans laquelle la méthode principale est appelée. Ensuite, une instance d'un thread est créée pour fonctionner sur une méthode, qui est démarrée à l'aide de la méthode Start() et la méthode join() est utilisée sur le même thread pour s'assurer que son exécution n'est pas interrompue par les autres threads. Par conséquent, la sortie est affichée dans une ligne de manière synchrone. La sortie du programme est affichée dans l'instantané ci-dessus.

Exemple n°2

Programme C# pour démontrer la synchronisation des threads à l'aide du mot-clé lock.

Code : 

using System;
using System.Threading;
//a class called create is created
class create
{
public void func()
{
//lock is called on this method
lock (this)
{
for (inti = 1; i<= 2; i++)
{
Console.WriteLine("The thread is executing");
}
}
}
}
class check
{
public static void Main(string[] args)
{
//an instance of the create class is created
create c = new create();
//an instance of the thread class is created which operates on the method in another class
Thread firstthread = new Thread(c.func);
firstthread.Start();
Thread secondthread = new Thread(c.func);
secondthread.Start();
}
}

Sortie :

Synchronisation des threads C#

Explication : Dans le programme ci-dessus, une classe appelée à créer est créée avec laquelle la méthode est définie pour laquelle nous avons utilisé un mot-clé lock signifiant que le thread opérant sur cette méthode verrouille la méthode pour lui-même jusqu'à ce que il termine l'exécution sans permettre aux autres threads d'accéder à la méthode. De cette façon, les threads sont exécutés de manière synchrone. La sortie du programme est affichée dans l'instantané ci-dessus.

Conclusion

Dans ce didacticiel, nous comprenons le concept de ThreadSynchronization en C# à travers la définition, la syntaxe et le fonctionnement de la synchronisation des Threads à travers des exemples de programmation et leurs sorties.

Article recommandé

Ceci est un guide sur la synchronisation des threads C#. Nous discutons ici de l'introduction à la synchronisation des threads C# et de son fonctionnement, ainsi que de ses exemples et de l'implémentation du code. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus –

  1. Générateur de nombres aléatoires en C#
  2. Constructeur statique en Java
  3. TextWriter en C#
  4. Constructeur statique en C#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Veille des threads C#Article suivant:Veille des threads C#