SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Software Development Technologies
Threads and Synchronization in C#
Muhammad Rizwan
rairizwanali@gmail.com
Contents






What is a Thread?
Threads in C#
Types of Threads
Threads Priority in C#
Controlling Threads in C#
What is Thread ?









In computer science, a Thread is the smallest unit of
processing that can be scheduled by an operating system.
It generally results from a fork of a computer program.
The implementation of threads and processes differs from one
operating system to another, but in most cases, a thread is
contained inside a process.
Multiple threads can exist within the same process and share
resources such as memory, while different processes do not
share these resources.
Consider the Example of a Word Processing Application i.e.,
Ms Word. Ms Word is a process and spell-checker within it is
a Thread. And the memory they share is Word document.
What is Thread ?
Threads in C#








A thread is an independent stream of instructions
in a program.
All your C# programs up to this point have one
entry point — the Main() method.
Execution starts with the first statement in the
Main() method and continues until that method
returns.
This program structure is all very well for programs
in which there is one identifiable sequence of
tasks With the Thread class, you can create and
control threads.
Threads in C#










The code here is a very simple example of creating
and starting a new thread.
The constructor of the Thread class is overloaded
to accept a delegate parameter of type ThreadStart
OR, a simple method without any return value and
input parameters.
The ThreadStart delegate defines a method with a
void return type and without arguments.
After the Thread object is created, you can start the
thread with the Start() method.
Threads in C#
using System;
using System.Threading;
namespace Wrox.ProCSharp.Threading
{
class Program
{
static void Main()
{
Thread t1 = new Thread(ThreadMain);
t1.Start();
Console.WriteLine("This is the main thread.");
}
static void ThreadMain()
{
Console.WriteLine("Running in a thread.");
}
}
}
Threads in C#


When you run the application, you get the output of
the two threads:
This is the main thread.
Running in a thread.
Types of Threads


There are two types of Threads









Foreground Threads
Background Threads

The process of the application keeps running as
long as at least one foreground thread is running.
Even if Main() method ends, the process of the
application remains active until all foreground
threads finish their work.
A thread you create with the Thread class, by
default, is a foreground thread.
Threads in C#









When you create a thread with the Thread class, you can
define whether it should be a foreground or background
thread by setting the property IsBackground.
Background threads are very useful for background tasks.
For example, when you close the Word application, it doesn’t
make sense for the spell checker to keep its process running.
The spell-checker thread can be killed when the application is
closed (Background Thread).
However, the thread organizing the Outlook message store
should remain active until it is finished, even if Outlook is
closed (Foreground Thread).
Threads Priority in C#








The operating system schedules threads based on
a priority, and the thread with the highest priority is
scheduled to run in the CPU.
With the Thread class, you can influence the priority
of the thread by setting the Priority property.
The Priority property requires a value that is defined
by the ThreadPriority enumeration.
The levels defined are Highest , AboveNormal ,
Normal , BelowNormal , and Lowest .
Controlling Threads












The thread is invoked by the Start() method of a Thread
object.
However, after invoking the Start() method, the new thread is
still not in the Running state, but in the Unstarted state.
The thread changes to the Running state as soon as the
operating system thread scheduler selects the thread to run.
You can read the current state of a thread by reading the
property Thread.ThreadState.
With the Thread.Sleep() method, a thread goes into the
WaitSleepJoin state.
And waits until it is woken up again after the time span defined
with the Sleep() method has elapsed.
Controlling Threads






To stop another thread, you can invoke the method
Thread.Abort().
When this method is called, an exception of type
ThreadAbortException is thrown in the thread that
receives the abort.
With a handler to catch this exception, the thread
can do some clean-up before it ends.
Thread Synchronization






A race condition can occur if two or more threads
access the shared data in the absence of
synchronization.
It is best to avoid synchronization issues by not
sharing data between threads. Of course, this is not
always possible.
If data sharing is necessary, you must use
synchronization techniques so that only one thread
at a time accesses and changes shared state.
Thread Synchronization
public class myClass
{
public static int count;
public void A()
{
for (int i = 0; i <100; i++)
{
count++;
}
}
}
Thread Synchronization
public class myProgram
{
Thread T1 = new Thread(A);
Thread T2 = new Thread(A);
T1.Start();
T2.Start();
Console.WriteLine(“ The count variable = {0}”,myClass.count);
}
Thread Synchronization





These two threads run as two independent threads.
If you run this program then you will discover that
the final value of count isn’t predictable because it
all depends on when the two threads get access to
count.
Every time you run this program the last value of
count variable would be different.
Thread Synchronization




C# has its own keyword for the synchronization of
multiple threads: the lock statement.
The lock statement is an easy way to hold for a lock
and release it.
public void A()
{
lock (this)
{
for (int i = 0; i <100; i++)
{
count++;
}
}
}
The End



Thanks for listening
Questions would be appreciated.

Weitere ähnliche Inhalte

Was ist angesagt?

Java Thread Synchronization
Java Thread SynchronizationJava Thread Synchronization
Java Thread Synchronization
Benj Del Mundo
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
Tech_MX
 

Was ist angesagt? (20)

PHP - Introduction to File Handling with PHP
PHP -  Introduction to  File Handling with PHPPHP -  Introduction to  File Handling with PHP
PHP - Introduction to File Handling with PHP
 
Introduction to oops concepts
Introduction to oops conceptsIntroduction to oops concepts
Introduction to oops concepts
 
Java - Exception Handling Concepts
Java - Exception Handling ConceptsJava - Exception Handling Concepts
Java - Exception Handling Concepts
 
Java Thread Synchronization
Java Thread SynchronizationJava Thread Synchronization
Java Thread Synchronization
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Php array
Php arrayPhp array
Php array
 
JAVA AWT
JAVA AWTJAVA AWT
JAVA AWT
 
Linked list
Linked listLinked list
Linked list
 
Pointers in c++
Pointers in c++Pointers in c++
Pointers in c++
 
Threads concept in java
Threads concept in javaThreads concept in java
Threads concept in java
 
Java Exception handling
Java Exception handlingJava Exception handling
Java Exception handling
 
Assemblies
AssembliesAssemblies
Assemblies
 
Polymorphism in oop
Polymorphism in oopPolymorphism in oop
Polymorphism in oop
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
 
Threads in JAVA
Threads in JAVAThreads in JAVA
Threads in JAVA
 
Database Connectivity in PHP
Database Connectivity in PHPDatabase Connectivity in PHP
Database Connectivity in PHP
 
Cookies and sessions
Cookies and sessionsCookies and sessions
Cookies and sessions
 
Event handling
Event handlingEvent handling
Event handling
 
Static Data Members and Member Functions
Static Data Members and Member FunctionsStatic Data Members and Member Functions
Static Data Members and Member Functions
 

Andere mochten auch (7)

Concurrency Programming in Java - 06 - Thread Synchronization, Liveness, Guar...
Concurrency Programming in Java - 06 - Thread Synchronization, Liveness, Guar...Concurrency Programming in Java - 06 - Thread Synchronization, Liveness, Guar...
Concurrency Programming in Java - 06 - Thread Synchronization, Liveness, Guar...
 
Thread
ThreadThread
Thread
 
Learning Java 3 – Threads and Synchronization
Learning Java 3 – Threads and SynchronizationLearning Java 3 – Threads and Synchronization
Learning Java 3 – Threads and Synchronization
 
Inner Classes & Multi Threading in JAVA
Inner Classes & Multi Threading in JAVAInner Classes & Multi Threading in JAVA
Inner Classes & Multi Threading in JAVA
 
Java Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data StructuresJava Performance, Threading and Concurrent Data Structures
Java Performance, Threading and Concurrent Data Structures
 
Threading in C#
Threading in C#Threading in C#
Threading in C#
 
Threading in c#
Threading in c#Threading in c#
Threading in c#
 

Ähnlich wie Threads And Synchronization in C#

Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
Raghu nath
 
Multithreading
MultithreadingMultithreading
Multithreading
backdoor
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptx
Arulmozhivarman8
 
Multithreading
MultithreadingMultithreading
Multithreading
sagsharma
 

Ähnlich wie Threads And Synchronization in C# (20)

Md09 multithreading
Md09 multithreadingMd09 multithreading
Md09 multithreading
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Intake 38 12
Intake 38 12Intake 38 12
Intake 38 12
 
Threadnotes
ThreadnotesThreadnotes
Threadnotes
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Multithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of threadMultithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of thread
 
advanced java ppt
advanced java pptadvanced java ppt
advanced java ppt
 
multithreading
multithreadingmultithreading
multithreading
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading
 
Java multithreading
Java multithreadingJava multithreading
Java multithreading
 
Multithreading and concurrency in android
Multithreading and concurrency in androidMultithreading and concurrency in android
Multithreading and concurrency in android
 
Multithreading
MultithreadingMultithreading
Multithreading
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptx
 
Chap3 multi threaded programming
Chap3 multi threaded programmingChap3 multi threaded programming
Chap3 multi threaded programming
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Threading.pptx
Threading.pptxThreading.pptx
Threading.pptx
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 

Threads And Synchronization in C#

  • 1. Software Development Technologies Threads and Synchronization in C# Muhammad Rizwan rairizwanali@gmail.com
  • 2. Contents      What is a Thread? Threads in C# Types of Threads Threads Priority in C# Controlling Threads in C#
  • 3. What is Thread ?      In computer science, a Thread is the smallest unit of processing that can be scheduled by an operating system. It generally results from a fork of a computer program. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process. Multiple threads can exist within the same process and share resources such as memory, while different processes do not share these resources. Consider the Example of a Word Processing Application i.e., Ms Word. Ms Word is a process and spell-checker within it is a Thread. And the memory they share is Word document.
  • 5. Threads in C#     A thread is an independent stream of instructions in a program. All your C# programs up to this point have one entry point — the Main() method. Execution starts with the first statement in the Main() method and continues until that method returns. This program structure is all very well for programs in which there is one identifiable sequence of tasks With the Thread class, you can create and control threads.
  • 6. Threads in C#      The code here is a very simple example of creating and starting a new thread. The constructor of the Thread class is overloaded to accept a delegate parameter of type ThreadStart OR, a simple method without any return value and input parameters. The ThreadStart delegate defines a method with a void return type and without arguments. After the Thread object is created, you can start the thread with the Start() method.
  • 7. Threads in C# using System; using System.Threading; namespace Wrox.ProCSharp.Threading { class Program { static void Main() { Thread t1 = new Thread(ThreadMain); t1.Start(); Console.WriteLine("This is the main thread."); } static void ThreadMain() { Console.WriteLine("Running in a thread."); } } }
  • 8. Threads in C#  When you run the application, you get the output of the two threads: This is the main thread. Running in a thread.
  • 9. Types of Threads  There are two types of Threads      Foreground Threads Background Threads The process of the application keeps running as long as at least one foreground thread is running. Even if Main() method ends, the process of the application remains active until all foreground threads finish their work. A thread you create with the Thread class, by default, is a foreground thread.
  • 10. Threads in C#      When you create a thread with the Thread class, you can define whether it should be a foreground or background thread by setting the property IsBackground. Background threads are very useful for background tasks. For example, when you close the Word application, it doesn’t make sense for the spell checker to keep its process running. The spell-checker thread can be killed when the application is closed (Background Thread). However, the thread organizing the Outlook message store should remain active until it is finished, even if Outlook is closed (Foreground Thread).
  • 11. Threads Priority in C#     The operating system schedules threads based on a priority, and the thread with the highest priority is scheduled to run in the CPU. With the Thread class, you can influence the priority of the thread by setting the Priority property. The Priority property requires a value that is defined by the ThreadPriority enumeration. The levels defined are Highest , AboveNormal , Normal , BelowNormal , and Lowest .
  • 12. Controlling Threads       The thread is invoked by the Start() method of a Thread object. However, after invoking the Start() method, the new thread is still not in the Running state, but in the Unstarted state. The thread changes to the Running state as soon as the operating system thread scheduler selects the thread to run. You can read the current state of a thread by reading the property Thread.ThreadState. With the Thread.Sleep() method, a thread goes into the WaitSleepJoin state. And waits until it is woken up again after the time span defined with the Sleep() method has elapsed.
  • 13. Controlling Threads    To stop another thread, you can invoke the method Thread.Abort(). When this method is called, an exception of type ThreadAbortException is thrown in the thread that receives the abort. With a handler to catch this exception, the thread can do some clean-up before it ends.
  • 14. Thread Synchronization    A race condition can occur if two or more threads access the shared data in the absence of synchronization. It is best to avoid synchronization issues by not sharing data between threads. Of course, this is not always possible. If data sharing is necessary, you must use synchronization techniques so that only one thread at a time accesses and changes shared state.
  • 15. Thread Synchronization public class myClass { public static int count; public void A() { for (int i = 0; i <100; i++) { count++; } } }
  • 16. Thread Synchronization public class myProgram { Thread T1 = new Thread(A); Thread T2 = new Thread(A); T1.Start(); T2.Start(); Console.WriteLine(“ The count variable = {0}”,myClass.count); }
  • 17. Thread Synchronization    These two threads run as two independent threads. If you run this program then you will discover that the final value of count isn’t predictable because it all depends on when the two threads get access to count. Every time you run this program the last value of count variable would be different.
  • 18. Thread Synchronization   C# has its own keyword for the synchronization of multiple threads: the lock statement. The lock statement is an easy way to hold for a lock and release it. public void A() { lock (this) { for (int i = 0; i <100; i++) { count++; } } }
  • 19. The End   Thanks for listening Questions would be appreciated.