C Thread - je li to što?

Što je zajedničko s majicom i računalnim programom? Obje se sastoje od mnogo potoka! Dok niti u majici drže tkaninu u obliku jedne tkanine, C Thread (doslovno "niti" ili "niti") operativnog sustava kombinira sve programe kako bi istodobno izvodio sekvencijalne ili paralelne radnje. Svaki tok u programu identificira proces koji se događa kada sustav (sistemska nit C) to zatraži. On optimizira rad tako složenog uređaja kao osobno računalo i pozitivno utječe na njegove performanse i performanse.


Definicija

U Computer Science From Thread, ili izvršnoj niti, je najmanji slijed naredbi kojima upravlja neovisni planer, koji je obično sastavni dio operativnog sustava.
Za tokove se obično daje određeni prioritet, što znači da neki tokovi imaju prioritet nad drugima. Kada procesor završi obradu jedne niti, može pokrenuti sljedeću, čekajući red. U pravilu, očekivanje ne prelazi nekoliko milisekundi. Računalni programi koji provode "multithreading" mogu izvršiti više struja odjednom. Najsuvremeniji OS podržava Thread s razine sustava. To znači da kada jedan program pokuša oduzeti sve resurse procesora, sustav se prisilno prebacuje na druge programe i prisiljava program za podršku procesoru da ravnomjerno dijeli resurse.


Izraz "stream" (iz Thread) također se može odnositi na niz povezanihonline poruke za raspravu. Web-oglasne ploče sastoje se od mnogih tema ili grana. Odgovori poslani kao odgovor na izvorni post su dio iste niti. U struji e-pošte nit može upućivati ​​na niz odgovora u obliku naredbi "unatrag" i "naprijed" koje se odnose na određenu poruku i strukturirati stablo razgovora.

Multithreaded C Thread Windows

U računalnom programiranju, single-threading je obrada jedne naredbe odjednom. Suprotno jednostruko urezivanje - višenitno. Oba termina su široko korištena u zajednici funkcionalnog programiranja. Multithreading je slično multitaskingu, ali vam omogućuje da obrađujete više niti u isto vrijeme, ali ne i nekoliko procesa. Budući da su tokovi manji i kontrolirani jednostavnijim uputama, višedretvenost se također može pojaviti unutar procesa.

Primjeri rada alata C Zadatak s navojem

Operacijski sustav s više navoja može programirati. Multithreading može spriječiti neuspjeh programa i spriječiti kvar na vašem računalu. Budući da se svaki stream obrađuje odvojeno, pogreška u jednom od njih ne može poremetiti računalo. Dakle, višedretvenost može dovesti do manjeg pada sustava u radu operativnog sustava u cjelini.

Višezadaćnost

Višezadaćnost rješava više zadataka u paralelnom načinu i opisuje načela računala. Procesor može obraditi više procesa odjednom s apsolutnom preciznošću. Međutim, procesor izvodi određeni procesoroperacije. Glavni zadaci operativnog sustava, kao što su kopiranje datoteka, nisu dopuštali korisniku da obavlja druge zadatke (otvaranje ili zatvaranje prozora, na primjer). Moderni operacijski sustavi uključuju punu podršku za višezadaćnost - višestruka softverska rješenja mogu raditi istodobno, bez ometanja međusobne funkcionalnosti. Višezadaćnost također povećava stabilnost računala. Tehnologija se razlikuje, ovisno o operativnom sustavu, ali najčešće je to komponenta procesa. Istovremeno, nekoliko tokova može postojati u jednom procesu, izvodeći i dijeleći resurse. Konkretno, procesni tokovi C Thread-a koriste zajedničke izvršne kodove i vrijednosti varijabli u bilo kojem trenutku.

može blockSettings3 = {blockId: "R-A-70350-3", renderTo: "yandex_rtb_R-A-70350-3", async:! 0};

if (document.cookie.indexOf ("abmatch =") & gt; = 0) {
blockSettings3 = {blockId: "RA-70350-3", renderTo: "yandex_rtb_R-A-70350- 3 ", statId: 70350sync:! 0};
}

Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya .Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("skripta")izvršava se u paralelnom načinu, pri čemu svaki procesor ili kernel izvršava odvojeni tok odjednom.

Tipovi tokova

Planeri procesa u većini modernih operacijskih sustava izravno podržavaju privremeno i višeprocesorsko strujanje, dok kernel operativnog sustava omogućuje programerima upravljanje protokom pružanjem potrebnih funkcija putem sučelja sistemskog poziva. Neke implementacije s navojem nazivaju se teme jezgre, dok su svjetlosni procesi (LWP) vrsta toka koji ima isto stanje informacija. Također, softverska rješenjamogu imati protoke korisničkog prostora kada se koriste s tajmerima C, signalima ili drugim metodama za prekid vlastitog izvršavanja izvođenjem vrste ad hoc privremenog oglasa.

Struje i procesi: razlike

Struje se razlikuju od klasičnih procesa višezadaćnog OS sa sljedećim karakteristikama:
  • procesi su obično neovisni, dok tokovi postoje kao podskup procesa;
  • procesi nose mnogo više informacija nego struje;
  • procesi imaju namjenski adresni prostor;
  • procesi međusobno djeluju samo putem mehanizama sustavne komunikacije;
  • prebacivanje konteksta između niti u procesu je brže od prebacivanja konteksta između procesa.

    Preventivno i kolaborativno planiranje

    U višekorisničkim operacijskim sustavima, preventivno multithreading je široko korišten pristup za kontrolu vremena implementacije prebacivanjem konteksta. Ipak, preventivno planiranje može dovesti do nekontroliranog programiranja prioriteta i neuspjeha. Naprotiv, zajednička višedretvenost temelji se na nitima za odbijanje kontrole izvršenja. To može stvoriti probleme ako je dijeljeni višestruki protok blokiran čekanjem na resurs.

    Evolucija tehnologije

    Do ranih 2000-ih, većina stolnih računala imala je samo jedan procesor s jednom jezgrom koji nije podržavao tokove hardvera. Godine 2002. Intel je implementirao simultanu multithreading podršku na procesoruPentium 4 koji se naziva Hyper-Threading. U 2005, uveden je dual-core procesor Pentium D i dual-core AMD Athlon 64 X2 procesor. Procesori u integriranim sustavima s višim zahtjevima za operacije u stvarnom vremenu mogu podržavati višedretvenost, smanjiti vremena uključivanja i koristiti namjensku datoteku registra za svaku nit.

    Modeli

    Navedimo glavne modele realizacije. 1: 1 (protok kernela) - teme koje kreira korisnik u kernelu su najjednostavnija moguća implementacija niti. OS /2 i Win32 koriste ovaj pristup od početka, dok se u Linux knjižnici, C Thread pridružuje implementira ovaj pristup kroz NPTL ili starije LinuxThreads. Ovaj pristup koriste i Solaris, NetBSD, FreeBSD, MacOS i iOS. N: 1 (protokno sučelje) - ovaj model pretpostavlja da su svi tokovi na razini aplikacije preslikani na jedan ciljni objekt razine jezgre. S ovim pristupom, prekidač konteksta može se izvršiti vrlo brzo, a štoviše, on se čak može implementirati na onim jezgrama koje ne podržavaju obradu struje. Međutim, jedan od glavnih nedostataka je u tome što ne koristi hardversko ubrzanje na višenitnim procesorima ili računalima. Na primjer: ako jedna od niti mora biti izvršena kada I /O zahtjev, cijeli proces je blokiran i streaming ne može se koristiti. Iznimka GNU Portable C Thread koristi se kao obrada na razini korisnika. M: N (hibridna implementacija) - model predstavlja određeni broj tokova aplikacija za neke N jezgre ćelija ili "virtualnih procesora". Ovo je kompromisizmeđu niti kernel razine ("1: 1") i korisnika ("N: 1"). "M: N" streaming sustavi su složeniji jer trebate promijeniti kernel kod i korisnički kod. U implementaciji M: N, knjižnica za obradu niti je odgovorna za planiranje tokova u dostupnim raspoređenim entitetima. To čini kontekst najoptimalnijim, jer izbjegava sistemske pozive. Međutim, to povećava složenost i vjerojatnost inverzije, kao i suboptimalno planiranje bez velike (i skupe) koordinacije između planera korisničkog okruženja i planera kernela.
    Primjeri hibridne implementacije su aktivacija raspoređivača koju koristi ugrađena implementacija POSIX NetBSD knjižnice (za model M: N, za razliku od modela implementacije kernela 1: 1 ili modela prostornog korisnika). Lagani procesi koje koriste starije verzije operacijskog sustava Solaris (Std Thread C toolkit).

    Podrška programskom jeziku

    Mnogi formalni sustavi podržavaju funkcionalnost protoka. Implementacija C i C ++ implementiraju ovu tehnologiju i pružaju pristup vlastitim API sučeljima za operativni sustav. Neki programski jezici na visokoj razini, kao što su Java, Python i .NET Framework, usmjeravaju programere apstrakcijom specifičnih razlika u izvršavanju niti u izvršnom okruženju. Druga proširenja jezika također pokušavaju apstrahirati koncept paralelizma i streaminga od razvojnog programera. Neki su jezici namijenjeni konzistentnom paralelizmu pomoću grafičkih procesora.
    Broj interpretiranih jezikaima implementacije koje podržavaju streaming i paralelnu obradu, ali ne i paralelno izvršavanje niti zbog globalnog blokiranja tumača (GIL). GIL je uzajamno isključivo blokiranje od strane tumača, što može spriječiti simultano tumačenje programskog koda za dvije ili više niti istovremeno, što ograničava paralelizam u višejezgrenim sustavima. Druge implementacije interpretiranih programskih jezika, kao što je Tcl, koriste proširenje Thread sleep C. To izbjegava maksimalnu GIL granicu, koristeći model gdje sadržaj i kod moraju biti eksplicitno "distribuirani" između tokova. Programski jezici programski orijentiranih aplikacija, kao što su Verilog i proširenja Thread sleep C, imaju još jedan uzorak protoka koji podržava maksimalnu količinu hardverske simulacije.

    Praktična višenitna obrada

    Višenitne knjižnice iniciraju poziv funkcije za generiranje novog toka koji uzima funkcionalnu vrijednost kao parametar. Tada se kreira novi paralelni tok i pokreće se obrada pokrenute funkcije s naknadnim vraćanjem. Programski jezici sadrže knjižnice niti koje uključuju globalne značajke sinkronizacije koje vam omogućuju stvaranje i uspješnu implementaciju višedretvenosti bez pogreške, koristeći mutexe, varijable, kritične particije, monitore i druge vrste sinkronizacije.
  • Povezane publikacije