Typer tråder
En prosesss spesielle seriestrøm blir referert til som en tråd. Tråder er betegnet som uvesentlige prosedyrer, da de ligner på prosesser på mange måter. Selv om tråder betjenes sekvensielt, ser de ut til å løpe samtidig. Det er forskjellige tilstander for hver tråd.
I hovedsak er prosesser programmene som sendes ut fra klar tilstand og planlagt for utførelse i CPU. Prosessbegrepet holdes av PCB (Process Control Block). En prosess kan produsere det som blir referert til som "barneprosesser" eller nye prosesser. Prosessen tar lengre tid å fullføre fordi den er isolert, noe som betyr at den ikke deler et minne med andre prosesser. Noen av følgende tilstander for prosessen kan være til stede: Ny, klar, løpende, venter, avsluttet eller suspendert.
Tråder
En tråd er en modul av en prosess. En prosess kan ha flere tråder, og alle disse trådene er inneholdt i metoden. Tre stater eksisterer for en tråd: løping, klar og blokkert. Tråden avsluttes raskere enn prosessen, men den isolerer ikke slik prosessen gjør.
De vanlige egenskapene mellom tråder og prosesser inkluderer
Skillene mellom prosesser og tråd
Tråd på brukernivå
Det blir utført i biblioteket på brukernivå; Systemanrop brukes ikke til å konstruere dem. Trådbryter krever ikke et OS -samtale eller en kjerneavbrudd. Kjernen administrerer dem som om de var entrådede prosesser, siden den ikke er klar over brukernivå-tråden.
fordeler
En trådnivå tråd
Trådene administreres av kjernen. I tillegg holder kjernen også oversikt over prosessene ved å bruke den konvensjonelle prosessbordet. OS -kjernen har systemanrop for å håndtere og lage tråder.
fordeler
Et annet navn for en tråd er en lett prosess. Ved å dele opp en prosess opp i flere tråder, er parallellisme ment å oppnås. For eksempel kan mange faner i en nettleser representere forskjellige tråder. Flere tråder brukes av MS Word, inkludert en for behandling av innganger og en annen for å formatere teksten.
En klassetråd refererer til en bestemt gjennomføringstråd. I C ++ refererer begrepet “trådklasse” til STD :: trådklassen. Når det koblede trådobjektet er opprettet, er den øverste metoden som ble levert som en del av funksjonskonstruktøravtalen der trådutførelsen begynner. Implementeringskoden som må påberopes vil motta et nytt trådobjekt som er opprettet for å starte en tråd.
Som det ble sagt tidligere, kreves std :: tråd for å starte en ny tråd, og tråden må også være omgivende. Et kallbart er et program som må kjøres når tråden er aktiv. Med andre ord, hvis en ny tråd er påkrevd, må en omgivende leveres som et argument til konstruktøren av et objekt for std :: tråd. Etter det begynner den nylig genererte tråden og den kalte medfølgende funksjonen kjøres.
Hovedskillet er at mens prosesser kjøres i forskjellige minneområder, tråder i en enkelt prosess delt minneplass. Fordi tråder ikke er helt uavhengige av hverandre som prosesser er, deler de OS -ressursene, kodeseksjonen og dataseksjonen med andre tråder.
Trådfunksjon i C++
I et operativsystem gir de (posix -tråden) for funksjoner, de funksjonene relatert til funksjoner. Vi kan lage mange tråder på denne måten for å støtte samtidig prosessstrøm. Det fungerer best på systemer med flere prosessorer eller kjerner, der utførelseshastigheten kan oppnås ved å implementere tråder på kjernenivå. Det kan også gjøres gevinster i systemer med en enkelt prosessor ved å dra nytte av IO eller andre systemtjenester som har en tendens til å pause prosesser.
Opprett () -funksjon
pthread_create: ny trådopprett
Parametere
Exit () funksjon
pthread_exit: pleide å slutte å bruke en tråd
Parametere
Avslør, en peker til et heltall som inneholder trådens returstatus er en nødvendig parameter for denne prosedyren. Enhver tråd som venter på å bli med i denne tråden, må kunne se returstatusen fordi denne variabelenes omfang må være globalt.
Bli med () Funksjon
pthread_join: pleide å gå ut av tråden venter
Parametere
Lik () funksjon
pthread_equal: Bestemmer om to tråder er like eller ikke. Funksjonen returnerer et ikke-null nummer hvis de to trådene er like, ellers null.
ST :: Trådskaping
I C ++ bygges tråder ved hjelp av STD :: trådklasse. En tråd er en unik utførelsesstrøm; Det ligner på å ha en hjelper til å fullføre en oppgave mens du er ferdig med en annen samtidig. Når all trådens kode er utført, stopper den. Når du etablerer en tråd, må noe overføres for å bli utført på den. Objektene som er oppført nedenfor kan sendes til en tråd.
Medlemstyper
ID: tråd -ID (offentlig)
Native_handle_type: native_handle_type (public)
Tråden muliggjør samtidig utførelse av flere oppgaver. I C ++ refererer begrepet “trådklasse” til STD :: trådklassen. Et nytt trådobjekt må genereres for å starte en tråd, og det må leveres til den utførende koden som må kalles. Den øverste metoden som ble levert som en del av funksjonskonstruktøravtalen er der trådutførelsen begynner etter at det koblede trådobjektet er opprettet.
Kallbart å bruke objekt
Et objekt kan gjøres kallbart ved å bruke denne metoden. For det er en klasse påkrevd og operatør () må overbelastes i den klassen. Programvaren som må kjøres når tråden dannes er inkludert i de overbelastede metodene.
Kallbar bruk av pekeren
En peker vil bli gjort kallbar ved å bruke denne metoden. I trådobjektet vises listen over parametere eller argumenter som er sendt til metoden ved siden av funksjonens navn.
Kallbar ved hjelp av funksjonspekeren
Å gi det til trådobjektet for utførelse oppnår ønsket resultat. Trådobjektets funksjonskonstruktør mottar et lambda -uttrykk kalt “LM” som sitt første argument før han mottar sine argumenter som sitt andre argument.
La oss diskutere forskjellige eksempler på std :: trådfunksjoner.
Eksempel 1
I dette tilfellet vil vi bruke en tråd med en peker.
#inkludere
#inkludere
Klassetest
offentlig:
void execute (std :: strengkommando)
for (int i = 0; i < 8; i++)
std :: cout<
;
int main ()
Test * testPtr = ny test ();
STD :: TRED TH (& Test :: Execute, TestPtr, "Verdier");
th.bli med();
slett testPtr;
retur 0;
Først inkluderer vi overskrifter -filene og i programmet. Vi oppretter klassen og spesifiserer navnet 'Test'. Deretter bruker vi den offentlige metoden og utfører strengkommandoen. Etter å ha utført strengkommandoen, vil vi søke om sløyfe og økning (0 til 8). Her bruker vi "cout" -erklæringen. Neste, vi kaller Main () -funksjonen. Sammen med dette kaller vi klassen 'test' og bruker en peker i den. Deretter passerer tråden pekeren. Deretter har vi brukt Join () -funksjonen, slett testpekeren og skriv inn 'Return 0'.
Eksempel 2
I dette tilfellet vil vi bruke en tråd uten peker.
#inkludere
#inkludere
klassenavn
offentlig:
statisk tomromstest (std :: strengkommando)
for (int i = 0; i < 3; i++)
std :: cout<
;
int main ()
STD :: TRED TH (& NAVN :: TEST, "NAVN");
th.bli med();
retur 0;
Bruk toppfiler og . Lag en klasse og tittelen på klassen er 'Navn'. Vi bruker den offentlige metoden og neste linje bruker en statisk medlemsfunksjon, og her passerer vi strengen. Bruk 'for' -sløyfen og initialiser deretter verdiene fra 0 til 3. Uttalelsen 'cout' brukes til å skildre verdien. I neste linje påkaller vi Main () -funksjonen, bruker tråd og passerer verdiene uten å bruke en peker. Deretter bruker vi join () -funksjonen og skriv inn 'Return 0'.
Eksempel 3
Her skal vi bruke tomrommetoperatøren.
#inkludere
#inkludere
ved hjelp av navneområdet STD;
Klasselaboratorium
offentlig:
ugyldig operatør () (int a)
for (int i = 0; i < a; i++)
cout << "Number of threads :" << i << "\n";
;
int main ()
tråd T2 (lab (), 6);
T2.bli med();
retur 0;
I denne koden integrerer vi de nødvendige overskriftsfilene , . Vi bruker standard navneområde som STD. Vi legger til en klasse som heter 'Lab' og bruker dens offentlige metode. Bruk deretter tomrommetoperatøren og initialiser en variabel 'A' i den. Her vil vi bruke 'for' -sløyfen fra 0 til verdien av variabel 'a'. Videre vil vi skrive ut en uttalelse "antall tråder" ved å bruke "cout" -erklæringen. Vi påkaller main () -funksjonen. Innenfor dette vil en tråd som har verdien 6 bli erklært. Når en tråd får en samtale, kjører den en kode og viser meldingen på skjermen.
Konklusjon
I denne guiden snakket vi om tråden i C ++ -funksjoner. Deretter observerer vi forskjellige funksjoner av tråd i C++. Vi definerte tråden og også dens typer. Vi nevnte også forskjellige parametere for tråden. Vi har utført mange typer koder. I den første koden brukte vi en tråd med en peker, det er en ikke-statisk medlemsfunksjon. For det andre, i kode vi bruker tråd uten peker, er det en statisk medlemsfunksjon. Tredje og siste kode, vi brukte Void -operatøren, og da en tråd fikk verdien, viste den meldingen på skjermen.