, multi - threaded is een bijzondere vorm van multi - tasken en multi - tasken, laat je computer en exploitatie van twee of meer programma 's.In het algemeen zijn er 2 soorten multitasking, op basis van het proces en de draad op basis van het multi - tasken, op basis van de gelijktijdige uitvoering van de programma 's.Op basis van de draden van de multi - tasken en de gelijktijdige uitvoering van programma 's met een multi - threaded programma bevat, kan de gelijktijdige werking van twee of meer delen.Deze programma 's elk deel is van een draad, en elke draad een afzonderlijke definitie van uitvoering + + bevat geen ingebouwde steun voor meervoudige aanvragen.Integendeel, het is volledig afhankelijk van de werking van het systeem voor deze functie, de les is dat je werk in Linux en we schrijven C + + - programma het gebruik van problemen van verschillende zijden draad.Problemen met draad, of Pthreads API - systeem zoals in veel problemen met een efficiënte, netbsd beschikbaar is, van de regering van nationale eenheid /Linux, Mac os X en solaris, het creëren van een draad, heeft de volgende programma 's: we gebruiken voor het scheppen van een draad, zoals:met inbegrip van < details. H > pthread_create (eigendom, start_routine ARG), hier, pthread_create, het creëren van nieuwe draad en uitvoering.Deze procedures kunnen worden genoemd de code van je overal in de tijd van de tijden.Hier is de beschrijving van de parameters voor de beschrijving van de parameters: draad is een ondoorzichtige, unieke identificatiecode voor de terugkeer van de door het programma terug draad.Attr ondoorzichtige eigenschap kan worden gebruikt voor de vaststelling van eigendom.Je kan aan een draad van voorwerpen, of voor de standaard is leeg.Start_routine C + + - programma, als de uitvoering van de draad wordt gecreëerd.L - arginine een parameter kan worden doorgegeven aan de start_routine.Het moet door middel van een type Aanwijzing verwijzing als ongeldig.Als er geen parameters, kan het gebruik van ruimte.Dat kan door een proces van een draad die relevant zijn voor de uitvoering van het maximale aantal is.Als je een draad zijn gelijken, en kan de oprichting van een draad.Er is geen enkele hiërarchie of afhankelijk zijn van, beëindiging van draden: tussen de draden van de volgende door de beëindiging van de conventionele, zoals:draad, met inbegrip van < details. H > pthread_exit (staat), hier, pthread_exit, uitdrukkelijk uit voor een draad.Onder normale omstandigheden, conventionele pthread_exit na voltooiing van de werkzaamheden (draad), niet langer bestaan, als de belangrijkste () voltooid en het creëren van draad, met pthread_exit (), andere kleren zou blijven.Anders worden ze automatisch opgeheven wanneer de Main (), bijvoorbeeld: de code van het monster is een draad pthread_create (5) conventionele.Elke draad afdrukken van een "Hallo."Nieuws, dan beëindigen met een naam pthread_exit ().# hoe een bibliotheek, met inbegrip van < >met inbegrip van < documenten cstdlib >met inbegrip van < details. H > met behulp van de definitie van num_threads namespace SOA; nietig printhello (* * * * * * * * * * * * * *)) {generaal driemaal daags; TID = (l). Cout < < "hallo wereld!De id, "< < driemaal daags < < endl; pthread_exit (.); in de Main () {} pthread_t threads[NUM_THREADS]; int -; int i; voor (i = 0; I < NUM_THREADS; I + +) (cout < <" Main (): het creëren van een andere, "< lt; I < < endl; - = pthread_create (& threads[i], nul, PrintHello, (" *) i); als (RC) {cout < < "Error:unable creëren de draad," < < - < < endl; uitgang (- 1); pthread_exit (}).);}, de opstelling van de volgende programma 's met behulp van -lpthread bibliotheek als volgt, $gcc test.cpp -lpthread, nu, dood je programma die moet leiden. De steun van De burgers als volgt: het creëren van een andere, de Main (, 0) (): het creëren van een andere, die van 1 creati Main ():Wu, de Main (2): het creëren van een draad, 3) (): het creëren van een draad, 4 hallo wereld!De draad identiteit, 0 hallo wereld!De draad identiteit, 1, hoe gaat het met de wereld.Identificatie van de draad, 2. Hallo.Identificatie van de draad, 3, hallo!De draad identiteit, 4, doorgegeven aan de draad van de parameters: dit is een voorbeeld van hoe de overdracht door middel van een structuur van veel parameters.Je kan door middel van een soort gegevens in een draad call - back - omdat het wijst op de volgende verklaring:nietig, met inbegrip van < hoe een bibliotheek >met inbegrip van < documenten cstdlib >met inbegrip van < details. H > met behulp van de definitie van num_threads namespace SOA; structuur thread_data (int thread_id; Char * nieuws;} (* * * * * * * * * * * * * * printhello leegte, nietig threadarg) {* * * * * * * my_data structuur thread_data; my_data = (structuur thread_data * * * * * * *) threadarg; cout < < "de draad id:" < < my_data - > thread_id; cout < < "de boodschap:" < < my_data - > nieuws < < endl; pthread_exit (lucht); in de Main () {} pthread_t draad [num_threads]; structuur thread_data TD [num_threads]; in de int i; gewapend beton; (i = 0; ik < num_threads; I + +) (cout enLT; < de "Main (): het creëren van een andere," < < I < < endl; td[i].thread_id = I; td[i].message = "dit is de boodschap"; - = pthread_create (& threads[i], nul, PrintHello, ("*) & td[i]); als (RC) {cout <" Error:unable te creëren; < draad, "< < - < < endl; uitgang (- 1); pthread_exit}} (.);}, wanneer de bovengenoemde code is compiled en het was, Een van de volgende - Main (): het creëren van een andere, en 0 Main (): het creëren van een andere, 1): het creëren van de draad, de Main (2): het creëren van de draad, de Main (3): het creëren van Main (draad, 4: de id 3: dit is de boodschap die de id: 2: dit is de boodschap die de id: 0: dit is de boodschap die de id: 1Informatie: dit is de boodschap van de draad ID:4 informatie: dit is nieuws, toe te voegen en het schrappen van draad, de volgende twee nummers, kunnen we het gebruiken om te verbinden of scheiding van draad, pthread_join (over de status van pthread_detach,) (), de pthread_join (programma 's blokkeert de draad, Tot beëindiging van die draden.Als een rode draad door het creëren van, het is een eigenschap is die gezamenlijk of afzonderlijk of kan worden.Alleen als die draad kan creëren kan worden toegevoegd.Als een draad is gecreëerd als detached, het kan nooit worden joined., dit voorbeeld van hoe op wacht demonstrates draad completions door het gebruik van het pthread bij routine., #include < iostream> #include < cstdlib> #include < pthread.h> omvatten;< unistd.h> gebruik van #define namespace SOA; NUM_THREADS 5 nietig *wait ("*) - int i;) driemaal daags; driemaal daags = (lange) - t; (1); cout < <" slapen in de draad "< < endl; cout < <" de draad met de id: "< < driemaal daags < <". Exiting "< < endl; pthread_exit (.);} in de Main () {int -; int i; pthread_t threads[NUM_THREADS]; pthread_attr_t attr; nietig *status; ///////- en een draad joinable pthread_attr_init (& attr P);Thread_attr_setdetachstate (& attr, PTHREAD_CREATE_JOINABLE); voor (i = 0; I < NUM_THREADS; I + +) (cout < < de "Main (): het creëren van een andere," < < I < < endl; - = pthread_create (& threads[i], dus wacht, ("*) i); als (RC) {cout < <" te creëren Error:unable draad, "< < - < < endl; uitgang (- 1);}} ///////vrije die voor de andere draden en ik pthread_attr_destroy (& attr); voor (i = 0; I < NUM_THREADS; I + +) (RC = pthread_join (threads[i] & status); als (RC) {cout < <" Error:unable aan toetreden, "< < - < < endl; uitgang (- 1);} cout < <" am Main afgerond draad id: "< < I. Cout &lT < "; er staat:" < < de huidige situatie < < endl;} cout < < "de belangrijkste programma 's." < < endl; pthread_exit (lucht);}, als de code wordt opgesteld en uitgevoerd, die leiden tot de volgende resultaten: Main (),: het creëren van een draad, 0) (): het creëren van een draad, 1) (): het creëren van een draad, 2) (): het creëren van een draad, 3) (): het creëren van een draad, 4 slapen op de id draad: 0.Met de identiteitskaart van de draad uit: 1.Met de identiteitskaart van de draad uit: 2...Met de identiteitskaart van de draad uit: 3...Met de identiteitskaart van de draad uit: 4...Uit de belangrijkste: de voltooiing van de draad identiteit: 0 0 uit staat: belangrijkste: de voltooiing van de draad identiteit: 1 uit de staat: 0 de belangrijkste: de voltooiing van de draad identiteit: 2 uit de staat: 0 de belangrijkste: de voltooiing van de draad identiteit: 3 uit de staat: de 50 belangrijkste: de voltooiing van de draad identiteit: 4 staat: intrekking van de belangrijkste programma 's: een van de voornaamste 0 programma' s.,
C + + multi - threaded
Previous:C + +
Next Page:No