C# parallelt foreach

C# parallelt foreach
I denne artikkelen vil vi fokusere på den parallelle foreach -sløyfen på programmeringsspråket C#. Ordet parallelt i C# -programmering kommer fra begrepet trådoppgaver, noe som betyr at når vi utfører mer enn en oppgave samtidig, kan vi bruke trådoppgavebiblioteket til å be om oppgavens parallelle bibliotek for å bli parallell for, foreach Loops til å fungere Over disse oppgavene, da de er mer effektive og mindre tidkrevende sammenlignet med normal sekvensiell for og foreach -løkker. Den parallelle foreach -sløyfen deler oppgavene og kjører iterasjonene i mer enn en strøm for å komme til sluttmålet. Den parallelle foreach brukes bare når en prosess blir iterativt påkalt for innspill og er med avhengig av andre operasjoner, da den øker tempoet i prosessene.

Nå vil vi utføre flere eksempler for å avklare og øke forståelsen av den parallelle foreach -sløyfen på C# programmeringsspråket.

Eksempel 01: Legge til tall i en liste ved hjelp av den parallelle foreach -sløyfen i Ubuntu 20.04

I dette eksemplet vil vi skrive et C# -program for å legge til tall i en liste ved hjelp av den parallelle foreach -sløyfen og merke antall tråder samtidig tildelt hvert trinn. Vi må bruke forskjellige biblioteker som trådoppgaven og lenke for å få tilgang til overvåkningen og effektiviteten til parallellen for hver sløyfe. Vi skal utføre dette eksemplet i Ubuntu 20.04 Miljø.g

I koden ovenfor har vi generert en liste ved hjelp av parallellen for hver sløyfe der tallene ble tildelt listen ved hjelp av rekkeviddefunksjonen. Deretter trykket vi også tråd -ID -ene på hvert trinn for å overvåke antall tråder som brukes mens vi tildeler verdier til listen. Etter å ha kjørt denne programfilen i vår kommandolinjeterminal, får vi følgende utdata:

Utgangen antyder at listen ble tildelt 5 verdier, og under denne prosessen ble to tråder brukt, noe som skapte en tidsforskjell i å utføre denne oppgaven. Hvis vi kan bruke en enkel sekvensiell for -løk. Selv om dette vil variere, da det avhenger av størrelsen på oppgaven som er for hånden, da den parallelle foreach -sløyfen er mer praktisk for den større størrelsen på oppgaven og behandlingen fordi den deler oppgaven i flere tråder og fungerer på "Divide and Conquer" -tilnærmingen.

Eksempel 02: Kontrollerende antall tråder ved bruk av parallell foreach -sløyfe i Ubuntu 20.04

I dette eksemplet vil vi kontrollere opprettelsen av antall tråder når en parallell foreach -sløyfe blir utført. Oppgavens trådbibliotek gir oss tilgang til en eiendom merket "maksimal grad av parallellisme" som kontrollerer parallelle operasjoner av parallelle opsjonsklassen og tildeler en verdi til denne egenskapen definerer antall parallelle operasjoner som skal utføres under programmet. Denne egenskapen blir sendt til den parallelle foreach -sløyfen gjennom et argument. Vi oppretter et C# -program for å tilordne tall til en liste og definere antall tråder for å utføre denne oppgaven.

Som vi kan se at det totale antallet tråder som ble brukt i utførelsen av denne oppgaven bare var 2, da vi fikset dette tallet ved å tilordne verdi til "maksimal grad av parallellisme.”I tilfelle en enorm mengde databehandling, kan vi variere verdien som er tilordnet den maksimale graden av parallellisme; Dette vil hjelpe oss å dele opp prosessorkraften likt og effektivt mellom underoppgavene eller parallelle operasjoner.

Eksempel 03: Utskriftsliste med strengvariabler ved å bruke den parallelle foreach -sløyfen i et C# -program i Ubuntu 20.04

I dette eksemplet vil vi skrive ut elementer på en liste med strengvariabler ved å bruke den parallelle foreach -sløyfen i et C# -program i Ubuntu 20.04 Miljø. Vi vil først initialisere en liste og tildele verdier til den manuelt og deretter skrive ut alle elementene som utgangen ved å bruke den parallelle foreach -sløyfen.

I koden ovenfor laget vi en liste som heter Continents og la til navn på kontinentene på listen før vi brukte parallellen for hver sløyfe. Vi la til trådoppgavebiblioteket for å bruke den parallelle foreach -sløyfen for koden vår. Den parallelle foreach -metoden tar i listen og et nytt objekt som en parameter for å lagre verdiene midlertidig for hver iterasjon. Etter å ha utført denne kodefilen på vår kommandolinjeterminal, vil vi få listen over navnene på kontinentene som vi lagret tidligere på listen vår.

Eksempel 04: Sammenligning av tradisjonell foreach -sløyfe med sekvensiell ved bruk av parallell foreach -sløyfe i C# i Ubuntu 20.04

I dette eksemplet vil vi sammenligne den tradisjonelle foreach -sløyfen med sin sekvensielle eiendom med den parallelle foreach -sløyfen ved å gjøre en lignende oppgave med begge løkkene. Utførelsestiden for begge løkkene vil være annerledes på grunn av deres forskjellige tilnærming til oppgaven. Vi vil skrive ut innholdet på listen, som vil bli initialisert før operasjonen, ved å bruke den tradisjonelle foreach -sløyfen med sin sekvensielle eiendom og parallellen for hver sløyfe.

I ovennevnte C# -program bruker vi en normal foreach -sløyfe og en parallell foreach -sløyfe og beregner tiden det tar å utføre oppgaven med begge løkkene; Vi vil bruke stoppeklokken fra C# programmeringsspråkens "diagnostikk" -bibliotek. Stopwatch -klassen har en "startNew ()" -metode, som starter stoppeklokken, og den forløpte () -funksjonen brukes til å stoppe stoppeklokken. Begge disse funksjonene ble gjort tilgjengelige ved å lage et objekt i stoppeklokklassen.

Utgangen viser at den tradisjonelle foreach -sløyfen tok kortere tid med å utføre oppgaven enn den parallelle foreach -sløyfen. Årsaken er at utførelsen av oppgaven er best egnet for en enkelt trådoperasjon, og å lage flere tråder for denne oppgaven ville være tidkrevende, men hvis listen ville ha omfattet tusenvis av data, ville utførelsestiden være omvendt For i det scenariet ville det være effektivt og tidsbesparende i det scenariet. Så når vi bruker den parallelle foreach -sløyfen, må vi observere størrelsen på prosessorkraften som kreves for den operasjonen og vurdere hvilken som vil være den passende sløyfen for den operasjonen.

Konklusjon:

Vi diskuterte den parallelle foreach -sløyfen på programmeringsspråket C#. I denne artikkelen ble betydningen av navnet "parallell" diskutert, så vel som de praktiske forskjellene mellom en parallell foreach -sløyfe og en standard foreach -sløyfe. Så implementerte vi flere eksempler på den parallelle foreach -sløyfen i Ubuntu 20.04 Miljø for å forstå mer klarhet i emnet. Vi konkluderte med at bruk av en parallell foreach -sløyfe må overvåkes mens du programmerer, da det kan gå uansett på grunn av trådmekanismen; Oppgaven er delt, noe som vil være tidkrevende i tilfelle av en mindre oppgave.