Maison > Article > développement back-end > Synchronisation des threads C#
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.
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.
Vous trouverez ci-dessous des exemples de synchronisation de threads C# :
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 :
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.
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 :
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.
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.
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 –
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!