Deze oplossingen zijn het lezen waard als uw computer u pthread_join foutcode 3 geeft.

Er zijn vaak ESRCH foutwetgeving – dit betekent dat de stream die je zeker probeert als manier om mee te doen op dit moment niet bestaat.

En dit komt door het slechte ongedefinieerde gedrag dat uw code bevat in termen van praktische ideeën over het omgaan met thread-ID’s.

  pthread_t 7 . RequestersThreads = nieuwe pthread_t [Length_Tasks]; 

Dit creëert een array die emotioneel gehecht is aan N threads, dan geef je ongetwijfeld een pointer door die normaal gesproken op je functie staat

  initRequestThreads (& RequestersThreads); 
  discussies [i] komt overeen met de frisse nieuwe pthread_t;pthread_create (& (* threads [i]), & attr - * ... * / 

Dit is waar je in de lucht je 100% keuze vastlegt en ongedefinieerd gedrag induceert. In uw individuele functie is Threads geen samenvoeging! Dit is het adres van maximum tabellen. Je kunt er niet zeker van zijn dat je toegang hebt als je rekening houdt met de index van de grote verscheidenheid-operator ( [] ). En de rest is gewoon een belediging als je hier eerder erg geblesseerd moet zijn geweest.

Als een eigen bedrijf C ++ 18 en hoger schrijft (zoals in You 2017), zou C ++ 11 std :: thread moeten helpen. Als u om de een of andere reden succesvol bent. Ik heb onlangs C ++ 2003 gebruikt, op het snelste einde uw vreselijke zaken met krachtige arrays die een aanwijzer doorgeven zodat u ze ook kunt, en gebruik an std :: vector < br> beschikbaar als prestatieparameter voor elke functie.

Naam

Hervatten

 #include  int pthread_join (pthread_t regel, leeg ** reval); 

Beschrijving

pthread_join error programma 3

De functie pthread_join () wacht direct op het drankje dat door Thread is opgegeven om de opdracht te annuleren. Als ditDe regel is al beëindigd, pthread_join () zal waarschijnlijk onmiddellijk terugkeren. Een stream die moeiteloos te herkennen is aan een stream moet zeker koppelbaar zijn.

Als retval echt niet null is, repliceert pthread_join () de exit-status van het doel-e-boek (dat wil zeggen, de waarde die wordt geretourneerd als resultaat van de specifieke doelthread.pthread_exit (3)) van onze locatie op * retval. Als de doelstroom is beëindigd, wordt PTHREAD_CANCELED geplaatst in* herwaardering.

Als meerdere proefpersonen in dezelfde vrije tijd proberen deel te nemen aan dezelfde keten, is het resultaat niet gedefinieerd. Als de threadaanroep pthread_join () mogelijk wordt geannuleerd,toen was de doelthread Joinable (d.w.z. het is niet nodig om de verbinding te verbreken) .value

Naar

Retourneert Succes, Pthread_join () Retourneert naar 0; Als er een fout optreedt, wordt een groot foutnummer geretourneerd.

Fout

EDEADLK
Deadlock gedetecteerd (bijvoorbeeld, verschillende threads proberen typisch verbinding te maken met een andere); of thread specificeert de hele thread voor telefoongesprekken.
EINVAL
stroom. nooit een perfecte verbindingsdraad.
EINVAL
Een andere thread wacht al om eindelijk deel te nemen aan deze thread.
ESRCH
Normaal gesproken hoeft u niet gevonden te worden in de authenticatiethread.

Overeenkomsten

Opmerkingen

Na een succesvolle e-mail naar pthread_join (), is de beller er zonder twijfel zeker van dat de thread is verwerkt.voltooid.

Aansluiten bij iemand die zich op dit moment heeft aangemeld met zorg resulteert in ongedefinieerd gedrag.

De verbinding is mislukt om een ​​enkele voldoende reden om de lijn verbinding te laten maken (d.w.z. vermijd dit handboek omdat een zombiethreadgebruikt wat computernetwerkbronnen, en als er voldoende over zombies wordt gepraat, zul je geen tijd produceren om nieuwe kousen (of processen) te maken.

Er is geen pthread analoog bij & status, waitpid (-1, 0), en het betekent simpelweg "verbind met elke voltooide stream".U zult waarschijnlijk dat objectontwerp moeten heroverwegen.

Alle threads in bepaalde soorten peer-to-peer-processen: elk wordt zorgvuldig geassocieerd door een proces in alle andere threads.

Voorbeeld

Zie ook

Referenties

POSIX-streams in de juiste vorm voor Windows - REFERENTIE -Pthreads-w32

Naam

pthread_timedjoin_np - moet wachten op een ander bericht dat zou worden voltooidPauze

Hervatten

Beschrijving

pthread_join onderbreekt de uitvoering van de contact-threadtot het einde van het bereik aangegeven door th, of doorRoep pthread_exit (3) aan en het kan via. zijngeannuleerd.

Als thread_return letterlijk NULL is en niet de bijbehorende terugstuurwaardewordt opgeslagen op de locatie waarnaar u kunt verwijzen door thread_return. vDe geretourneerde waarde die is gekoppeld aan het argument, onthoud dat dit het geval is:pthread_exit (3) gaf, ofPTHREAD_CANCELED en indien geannuleerd.

Nette draadknoopmoet in staat zijn om verbinding te maken: deze situatie mag niet afgesloten voelenpthread_detach (3) ofPTHREAD_CREATE_DETACHED kenmerk in pthread_create(3)...

pthread_join error number 3

Wanneer een verbonden thread doodgaat, vergeet dan niet de bronnen (threadHandvat verder stapel) zijn eigenlijk vrijgemaakt voor elke andere threadvoer hiervoor pthread_join uit. Vandaar pthread_joinmoet één keer worden aangeroepen voor elke bijgevoegde thread die is gemaakt om geheugen te vermijdeneen lekkage.

pthread_timedjoin_np is hetzelfde, hoewel pthread_join, behalvedat het een bepaald type ETIMEDOUT-fout retourneert wanneer het punt isniet voor het einde van de stemming de post hebben verlaten. Wanneer de volledige stemmingEen NULL-functie die voor altijd blijft bestaan, en dus zijn gedragwees de eigenlijk als pthread_join.

pthread_tryjoin_np is dat ik hetzelfde zou zeggen als pthread_join, behalve dathet zou EBUSY zeker onmiddellijk retourneren met een fout als een van onze focusthreadsIk kan niet vertrekken.

Met een exact aantal kan een thread wachten tot een specifieke thread is voltooid.Aanroepen van pthread_join overgenomen van de ene thread en de andereDe post wacht al op voltooiing en geeft bovendien een foutmelding.

Annuleren

pthread_join, pthread_tryjoin_np enpthread_timedjoin_np Uiteinden zijn doelen. WanneerOngetwijfeld zal de draad worden verstoord wanneer deze in beide wordt geschorstFunctie, afspelen behoudt de onmiddellijk, enAnnulering is gemaakt zonder te wachten geschikt voor vertaling.Uitmaken. Als Annuleren wordt weergegeven terwijl een van de functies onder meer actief is,Streams die niet typisch, lichtere tinten zijn aangesloten.

Retourwaarde

Bij succes wordt de belangrijkste opbrengst die echt waard is opgeslagen inDe positie die wordt aangegeven door thread_return en 0 resultaten naarfout, is de beste geretourneerde foutcode niet nul.

Fout

ESRCH
De stream kan niet worden gevonden, hij komt gewoon overeen met de opgegeven e.
EINVAL
-I tak is toegestaan.
EINVAL
De andere is een stroom die gewoonlijk al op zijn einde wacht.
ETIMEDOUT stemmen
(pthread_timedjoin_npalleen): succesvolvoordat het zou kunnen zijntoegetreden.
EDEADLK
Het th argument verwijst naar een locatieaanroep.

Auteur

Zie ook