C# Thread Synchronization
The technique of the resources being available for only one thread at a time without the interruption of any other thread until the task assigned to the current thread is finished is called synchronization in C#. Actually, any resource can be accessed by the thread for the required amount of time in a multithreading program and the resources are shared and executed asynchronously by the threads which is a critical task and may result in stopping the system and hence threads must be executed synchronously and by synchronization of threads, we can maintain consistency of the threads and make sure no other threads interfere during the execution of one thread.
Syntax of C# Thread Synchronization
Below is the syntax of C#Thread Synchronization is as follows:
Thread thread_name = new Thread(method_name); thread_name.Start(); thread_name.Join();
or
Thread thread_name = new Thread(method_name); thread_name.Start(); method_name() { lock(this) { //thread_name thread is executed } }
Where thread_name is the name of the thread and method_name is the name of the method accessed by this thread alone starting from the time thread_name.Start() is called, and thread_name.Join() waits till the completion of this thread by stopping the execution of all other threads.
Lock keyword within the method, method_name locks the thread execution so that no other threads can access the method until the completion of the current thread.
Functions of C# Thread Synchronization
- Any resource can be accessed by the thread for the required amount of time in a multithreading program but if several threads try to access the same resource, the sharing of resources by several threads at once or asynchronously becomes a critical task and the system may stop the execution.
- To overcome this problem, synchronization of threads is necessary. By synchronization of the thread, only that particular thread can have access to the resource for a certain amount of time without any interruption from the other threads.
- Synchronization of threads can be done using join keyword and lock keyword.
- When join keyword is used on a thread, the thread is allowed to complete its execution without the interruption of any other threads.
- When the lock keyword is used, the resource on which the thread is executing is locked for the time until the thread completes execution.
Examples to Implement C# Thread Synchronization
Below are the examples of C# Thread Synchronization:
Example #1
C# program to demonstrate synchronization of threads using join keyword.
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."); } } } }
Output:
Explanation: In the above program, a namespace called program is created. Then a class called check is defined within which the main method is called. Then an instance of a thread is created to operate on a method, which is begun using Start() method and join() method is used on the same thread to make sure its execution is not interrupted by the other threads. Hence the output is displayed in a row synchronously. The output of the program is shown in the snapshot above.
Example #2
C# program to demonstrate synchronization of threads using lock keyword.
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(); } }
Output:
Explanation: In the above program, a class called to create is created with which the method is defined for which we have used a lock keyword meaning the thread operating on this method locks the method for itself until it completes execution without allowing other threads to access the method. That way the threads are executed synchronously. The output of the program is shown in the snapshot above.
Conclusion
In this tutorial, we understand the concept of ThreadSynchronization in C# through definition, syntax, and working of Thread synchronization through programming examples and their outputs.
Recommended Article
This is a guide to C# Thread Synchronization. Here we discuss the Introduction to C# Thread Synchronization and its working along with its examples and Code Implementation. You can also go through our other suggested articles to learn more –
- Random Number Generator in C#
- Static Constructor in Java
- TextWriter in C#
- Static Constructor in C#
The above is the detailed content of C# Thread Synchronization. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Guide to Active Directory with C#. Here we discuss the introduction and how Active Directory works in C# along with the syntax and example.

Guide to C# Serialization. Here we discuss the introduction, steps of C# serialization object, working, and example respectively.

Guide to Random Number Generator in C#. Here we discuss how Random Number Generator work, concept of pseudo-random and secure numbers.

Guide to C# Data Grid View. Here we discuss the examples of how a data grid view can be loaded and exported from the SQL database or an excel file.

Guide to Patterns in C#. Here we discuss the introduction and top 3 types of Patterns in C# along with its examples and code implementation.

Guide to Prime Numbers in C#. Here we discuss the introduction and examples of prime numbers in c# along with code implementation.

Guide to Factorial in C#. Here we discuss the introduction to factorial in c# along with different examples and code implementation.

The difference between multithreading and asynchronous is that multithreading executes multiple threads at the same time, while asynchronously performs operations without blocking the current thread. Multithreading is used for compute-intensive tasks, while asynchronously is used for user interaction. The advantage of multi-threading is to improve computing performance, while the advantage of asynchronous is to not block UI threads. Choosing multithreading or asynchronous depends on the nature of the task: Computation-intensive tasks use multithreading, tasks that interact with external resources and need to keep UI responsiveness use asynchronous.
