C# Multithreading

C# Multithreading
En tråd sies å være en lett prosess, oppgave eller utførelsesvei for en hvilken som helst kode eller program. Tråder brukes til å utføre en spesifikk oppgave eller jobb og ha sin kontroll. Konseptet med multithreading kommer når vi deler en stor tråd i små tråder for å få dem til å utføre samtidig. På denne måten kan arbeidsmengden styres og kompleksiteten kan unngås. Innenfor C# -programmeringen har vi fått “Systemet.Tråd.Tråd "-klassen for å utføre multithreading ved å bruke dens nyttige funksjoner. Denne artikkelen er for hver C# -bruker som ikke har noen erfaring med multithreading og ønsker å lære det grunnleggende. La oss komme i gang nå.

Eksempel # 01: Hovedtråden

Du kan bekrefte for den gjeldende arbeidskatalogen for å søke i den ny genererte filen. Åpne den nye C# -filen din i noen av de tilgjengelige redaktørene fra Ubuntu 20.04 System. Vi har åpnet den i “Text” -redigereren, da det er veldig praktisk å bruke for nybegynnere så vel som for eksperter. Som temaet antyder, vil vi diskutere begrepet multithreading. Når vi oppretter et objekt av "tråden" -klassen, lager vi en barnetråd av den for øyeblikket utførende tråden. Hvis du vil bruke objektet til å spesifisere navnet på en overordnet tråd, må du bruke "CurrentThread" -egenskapen til trådklassen.

Så innenfor vårt første eksempel vil vi se på eiendommen "CurrentThread" av trådklassen til C#. Vi starter vår første eksempelkode med initialiseringen av "system" -biblioteket og "systemet.Gjenging ”-klasse. Vi har laget et navneområde som heter “Multithread” og laget en klasse “Gjenging” i det. Hoved () -funksjonen til denne klassen er startet med initialiseringen av "tråden" -klasseobjektet mens du bruker egenskapen "CurrentThread" i den. Nå peker objektet mot overordnede tråden.

Vi har brukt overordnet trådobjekt “T” for å kalle “Navn” -egenskapen til trådklassen for å få navnet på en nåværende tråd i.e. hovedtråden () (). Vi har gitt det navnet “Main” i henhold til koden nedenfor. WritLine () -funksjonen fra konsollklassen brukes til å vise navnet på en overordnet tråd på vår terminalskjerm ved å kalle "Navn" -egenskapen ved "T" -objektet til trådklassen.

Det aller første trinnet etter å ha lagret koden vår er å kompilere C# -koden. For dette må systemet ditt ha C# “MCS” -kompilatoren innebygd i det. Etter å ha samlet denne filen med "MCS", vil koden "EXE" -filen automatisk bli generert i den gjeldende arbeidskatalogen til Ubuntu 20.04. Vi må bruke denne "exe" -filen for å utføre koden med "mono" runtime -instruksjon for C#. Etter å ha kjørt den, har vi funnet ut at "hoved" -tråden kjører.

Eksempel # 02: Lag en barnetråd

La oss se på opprettelsen av en ny tråd ved hjelp av noen "ikke-statiske" datafunksjoner i koden. For dette har vi brukt den samme strukturen til en C# -kode i.e. Bruken av "system" -biblioteket og "systemet.Gjenging ”-klasse. Vi har laget to klasser i.e. MyThread, og nytt. Utførelse av denne koden vil bli startet fra den nye klassen da den inneholder hoved () funksjonstråden. Konsollen.Uttalelser om WritLine () vil vise oss at Main () -funksjonen kjører.

Etter det er objektet “T1” i en "Mythread" -klasse blitt opprettet. Denne objektopprettelsen betyr ikke at vi har opprettet et trådobjekt. Dette objektet brukes til å kalle MyThread -klassefunksjonene. Trådklasseobjektet “T” er opprettet for å lage en ny tråd. Mens trådstartegenskapen til denne trådklassen har blitt brukt til å starte funksjonen "tråd" fra "Mythread" -klassen som en ny tråd.

Objektet “T1” kaller sin funksjon i parametrene til “Threadstart” -funksjonen som en start på en ny tråd. Du må bruke "T" -objektet for å kalle "start" -funksjonen til trådklassen for å starte utførelsen av en ny tråd. Så, tråden () -funksjonen til Mythread -klassen vil bli utført. Det er for Loop vil bli utført 5 ganger, og viser at trådfunksjonen kjører. Koden er nå fullført. La oss se hvordan det fungerer.

Etter å ha sammenstilt og kjørt henholdsvis C# “CS” og “EXE” -filer, har vi fått den vist-below-utgangen. Barnetråden fra "Mythread" -klassen ble utført 5 ganger, i henhold til "for" -sløyfen.

Eksempel # 03: Mer enn en tråd

Eksemplet ovenfor handlet om opprettelsen av en enkelt tråd. Innenfor dette eksemplet vil vi diskutere bruken av statiske funksjoner for å lage mer enn 1 barnetråd i programmet. Så vi har laget to klasser med de samme navnene jeg.e. Mytread og nytt. Den nye klassen inneholder den eneste Main () -metoden som brukes til å lage to objekter T1 og T2 for trådklassen for å lage nye barnetråder.

Disse objektene har brukt Threading1 () og Threading2 () -funksjonene til MyThread -klassen for å lage dem som nye barnetråder. "Start ()" -funksjonen til trådklassen har blitt brukt til å starte Threading1 () -funksjonen og Threading2 () -funksjonen ved bruk av T1- og T2 -trådobjektene. Ettersom begge trådfunksjonene er statiske, kan ikke den andre tråden startes før den første fullførte utførelsen. Begge trådene utførte uttalelsene sine 3 ganger, og koden blir avsluttet.

Etter å ha kjørt denne kompilerte koden, viser utdata utførelsen av begge trådene separat.

Eksempel nr. 04: Avbryt tråden

Trådklassen har abort () -funksjonen for å avslutte trådene. Den bruker ThreadAbortex -besetningen for å utføre avslutningen. La oss ta en titt på dette ved å lage to klasser, Mythread og Ny. Main () -funksjonen startet med objektet “T” -skaping for Mythread -klassen med navnet “Tråd”.

Konstruktøren av Mythread -klassen begynte å kjøre og initialiserte en ny barnetråd med trådklassen “T1” -objektet ved å bruke “StartThread” -funksjonen i parametrene. Navnet er tildelt navnet eiendom og tråden kom i gang. Trådfunksjonene "StartThread" starter med en "Try-Catch" -uttalelse. "Prøv" -uttalelsen vil fortsette å kjøre til modulen til en verdi i løkken med 7 er lik 0. Der unntaket skjer, vil fangst- () uttalelsen kaste abort unntak.

Etter å ha kjørt denne koden, har vi fått tråden utført til verdien 49, og avsluttet til kode 300. Tråden er avbrutt på grunn av "hvis" -uttalelsen og konsollen.Uttalelse () uttalelse før fangst () uttalelse er unngått.

Konklusjon

Denne guiden er et must for hver C# -bruker som ønsker å lære det grunnleggende om multithreading. Vi har grundig forklart bruken av trådklassen i C#, for å lage tråder og navngi dem med gjeldende tråd og "navn" -egenskaper. Vi har diskutert bruken av "tråd" -klasseobjektoppretting for å lage en enkelt tråd eller flere tråder om gangen og starte dem med "start" -funksjonen til trådklassen. Vi har også sett hvordan du bruker Abort () -funksjonen i C# -koden for å avslutte en tråd ved hjelp av en prøvefangst erklæring i koden.