Introduksjon til multithreading i C #

For å forstå multetrinn i c #, la oss først forstå hva som er en tråd?

  • En tråd er en lett prosess.
  • Det er en utførelsessti for et program.
  • Det er den minste behandlingsenheten i et operativsystem.
  • Dermed kan en prosess ha flere tråder.

Så multithreading er en prosess som inneholder flere tråder der hver tråd utfører en annen aktivitet. Det sparer tid fordi flere oppgaver utføres samtidig av forskjellige tråder. Det øker CPU-bruken og øker effektiviteten til et program. Dette fungerer på tidsdelings-konseptet.

Syntaks med forklaring

Thread first_thread_name = new Thread(new ThreadStart(method_to_be_executed1));
Thread second_thread_name = new Thread(new ThreadStart(method_to_be_executed2));
first_thread_name.Start();
second_thread_name.Start();

For å lage en tråd, må vi opprette et objekt av trådklassen. Trådklasse-konstruktøren tar referanse til ThreadStart. ThreadStart er en delegat som representerer en metode som må utføres når tråden begynner utførelsen.

Tråden begynner utførelse når Start () -metoden kalles.

Vi kan opprette en tråd uten å bruke ThreadStart delegat som vist i syntaks nedenfor:

Thread thread_name = new Thread(method_to_be_executed);
thread_name.Start();

Opprette flere tråder i C #

For å opprette tråder, må vi importere systemet. Tredning av navneområde. Vi kan opprette og initialisere tråder ved å bruke tråden.

Eksempel ved bruk av trådklasse

using System;
using System.Threading;
public class MultiThreadingDemo
(
public static void Method1()
(
for (int i = 0; i <= 5; i++)
(
Console.WriteLine("Method1 : (0)", i);
)
)
public static void Method2()
(
for (int i = 0; i <= 5; i++)
(
Console.WriteLine("Method2 : (0)", i);
)
)
public static void Main()
(
// Creating and initializing threads
Thread thread1 = new Thread(Method1);
Thread thread2 = new Thread(Method2);
//beginning thread execution
thread1.Start();
thread2.Start();
)
)

Produksjon:

Eksempel ved bruk av ThreadStart delegat

using System;
using System.Threading;
public class MultiThreading
(
public static void Method1()
(
for (int i = 1; i <= 5; i++)
(
Console.WriteLine("Method1 : (0)", i);
)
)
public static void Method2()
(
for (int i = 1; i <= 5; i++)
(
Console.WriteLine("Method2 : (0)", i);
)
)
)
public class MultithreadingDemo
(
public static void Main()
(
Thread thread1 = new Thread(new ThreadStart(MultiThreading.Method1 ) );
Thread thread2 = new Thread(new ThreadStart(MultiThreading.Method2 ) );
thread1.Start();
thread2.Start();
)
)

Produksjon:

Merk: Det er ikke nødvendig at metoder som brukes i multithreading skal være statiske som i de to eksemplene ovenfor, både metodene dvs. Metode1 og Metode2 er statiske. Disse metodene kan være ikke-statiske, og i så fall må vi først lage et objekt i klassen som inneholder metoder og deretter få tilgang til metodene ved hjelp av objektet.

I C # inneholder et program alltid en tråd, dvs. hovedtråd. Når vi lager andre tråder, blir det et multithreading-program, og i C # multithreading er det to typer tråder:

  • Forgrunnstråd : Denne tråden fortsetter å utføre til den er ferdig med arbeidet selv om hovedtråden avsluttes.
  • Bakgrunnstråd : Når hovedtråd avsluttes, slutter også bakgrunnstråden å utføres og avsluttes med hovedtråden.

Metoder med eksempler

La oss se noen ofte brukte metoder i trådklassen med eksempler.

  • Sleep (): Brukes til å pause kjøringen av den gjeldende tråden i et spesifikt tidsrom, slik at andre tråder begynner utførelsen.

Eksempel:

using System;
using System.Threading;
public class Multithreading
(
public void Display()
(
for (int i = 1; i <= 10; i++)
(
Console.WriteLine(i);
//suspending execution of current thread for 100 milliseconds
Thread.Sleep(100);
)
)
)
public class MultithreadingDemo
(
public static void Main()
(
Multithreading multithreading = new Multithreading();
Thread thread1 = new Thread(new ThreadStart(multithreading.Display));
Thread thread2 = new Thread(new ThreadStart(multithreading.Display));
thread1.Start();
thread2.Start();
)
)

Produksjon:

Utgangen viser at begge trådene ble utført parallelt.

  • Avbryt (): Brukes til å avslutte tråden, eller vi kan si at den brukes til å stoppe utførelsen av tråden permanent.

Eksempel

using System;
using System.Threading;
public class Multithreading
(
public void Display()
(
for (int i = 0; i < 10; i++)
(
Console.WriteLine(i);
Thread.Sleep(100);
)
)
)
public class MultithreadingDemo
(
public static void Main()
(
Multithreading multithreading = new Multithreading();
Thread thread1 = new Thread(new ThreadStart(multithreading.Display));
Thread thread2 = new Thread(new ThreadStart(multithreading.Display));
Console.WriteLine("Threads start execution");
thread1.Start();
thread2.Start();
try
(
//terminating execution of thread using Abort()
thread1.Abort();
thread2.Abort();
Console.WriteLine("Threads execution terminated");
)
catch (ThreadAbortException threadAbortException)
(
Console.WriteLine(threadAbortException.ToString());
)
)
)

Produksjon:

  • Bli med (): Brukes for å få alle anropstråder til å vente til den nåværende tråden fullfører utførelsen og avsluttes.

Eksempel:

using System;
using System.Threading;
public class Multithreading
(
public void Display()
(
for (int i = 0; i < 5; i++)
(
Thread thread = Thread.CurrentThread;
Console.WriteLine(thread.Name +" : "+i);
Thread.Sleep(100);
)
)
)
public class MultithreadingDemo
(
public static void Main()
(
Multithreading multithreading = new Multithreading();
Thread thread1 = new Thread(new ThreadStart(multithreading.Display));
Thread thread2 = new Thread(new ThreadStart(multithreading.Display));
Thread thread3 = new Thread(new ThreadStart(multithreading.Display));
//Assigning names to threads using Name property
thread1.Name = "Thread1";
thread2.Name = "Thread2";
thread3.Name = "Thread3";
thread1.Start();
//Making Thread2 and Thread3 wait until Thread1 completes execution
thread1.Join();
thread2.Start();
thread3.Start();
)
)

Produksjon:

Fordeler med multithreading i C #

  1. Hjelper med å opprettholde et responsivt brukergrensesnitt: Noen ganger har vi en tidkrevende metode i applikasjonen vår. I så fall, hvis vi gjør applikasjonen multetrådd, tar andre tråder ansvar for utførelsen av den metoden, mens Main thread kan fokusere på responsen til applikasjonen. Dermed vil den ikke fryse applikasjonen vår ved å rettidig gi et riktig svar til brukeren.
  2. Øker ytelsen til applikasjonen: Hvis vi har så mange tråder som det er prosessorkjerner, vil hver tråd kjøre uavhengig og øke antall beregninger per sekund.
  3. Tråder minimerer bruken av systemressurser da de har samme adresserom.
  4. Den gjør koden både raskere og enklere på samme tid.

Konklusjon - Multithreading i C #

Trådklasse gir mange viktige egenskaper som Prioritet, Navn, IsAlive, bakgrunn som vi kan bruke i vår multitrase-applikasjon. Trådsynkronisering er en teknikk der en tråd kan få tilgang til en ressurs i en bestemt tid uten avbrytelse av andre tråder til den fullfører oppgaven.

Anbefalte artikler

Dette har vært en guide til multithreading i C #. Her diskuterer vi også deres introduksjon, syntaks, oppretting og eksempler på multetråd i c #. Du kan også se på følgende artikler for å lære mer–

  1. Objekter i C #
  2. Destructor i C #
  3. Destructor i C #
  4. Arv i C #
  5. Destructor i PHP | eksempler