Diese Korrekturen sind lesenswert, wenn dieser Computer den pthread_join-Fehlercomputercode 3 anzeigt.

Es gibt durchweg ESRCH Fehlerregeln – sie bedeuten, dass der Stream, dem Sie am Ende definitiv beitreten möchten, definitiv nicht existiert.

Und das wegen des schrecklichen undefinierten Verhaltens, das der Großteil Ihres Codes in Bezug auf praktische Ideen zum Umgang mit Thread-IDs verwendet.

  pthread_t * RequestersThreads entspricht new pthread_t [Length_Tasks]; 

Dies führt zu einem Array, das an N post angehängt ist, dann übergeben Sie zweifellos praktisch jeden Zeiger auf diesen Satz an Ihre persönliche Funktion

  initRequestThreads (& RequestersThreads); 
  threads [i] entspricht der Rückkehr zum neuen pthread_t;pthread_create (& (* Themen [i]), & attr / 7. ... * / 

Damit vermasseln Sie speziell Ihren 100 %-Typ und lösen undefiniertes Verhalten aus. In der besten Einzelfunktion werden Threads wahrscheinlich keine Mischung sein! Dies ist die gesamte Adresse der meisten Tabellen. Sie werden nicht darauf zugreifen können und wenn Sie die Liste des Array-Operators ( [] ) berücksichtigen. Und das abspulen ist nur eine weitere Beleidigung, wenn sich hier vorher eine Person verletzt haben muss.

Wenn Ihr Unternehmen C ++ 11 und höher veröffentlicht (wie in You 2017), sollte C ++ sechzehn std :: twine verwenden. Wenn Sie aus irgendeinem Grund erfolgreich sind Ich verwende C ++ 2003, beenden Sie zumindest Ihr extremes Geschäft mit dynamischen Arrays, die auch einen Zeiger auf sie erfüllen, und verwenden Sie dann std :: vector
als Aktionsparameter für Ihre Funktion.

Name

Lebenslauf

 #include  int pthread_join (pthread_t-Thread, leer ** retval); 

Beschreibung

pthread_join-Fehlercode 3

Das pthread_join() erledigt die Aufgabe und wartet auf den von Thread beschriebenen Trank, um die Richtung abzubrechen. Wenn dasDer Thread ist bereits erledigt, pthread_join() kann sofort zurückkehren. Ein Stream, der identifiziert werden kann, während ein Stream anfügbar sein muss.

Wenn retval definitiv nicht null ist, repliziert pthread_join () den Exit-Zustand, der mit der Zielpublikation zu tun hat (d.pthread_exit (3)) an unserem Standort über *retval. Wenn der Zielbach abgebrochen wurde, wird PTHREAD_CANCELED außen positioniert in* reval.

Wenn mehrere Probanden zur gleichen Zeit auschecken, um sich derselben Kette anzuschließen, ist das Ergebnis sicherlich undefiniert. Wenn der Thread uns aufruft, wird pthread_join () möglicherweise abgebrochen,dann ist der spezifische Ziel-Thread Joinable (d.h. dieser wählt nicht die Trennung) .rate

Zu

Gibt Erfolg zurück, Pthread_join() kehrt zu 0 zurück; Wenn ein Fehler auftritt, wird eine große Fehlernummer zurückgegeben.

Fehler

EDEADLK
Deadlock erkannt (zum Beispiel versuchen mehrere Threads, sich gegenseitig zu reparieren); oder thread legt den gesamten aufrufenden Thread fest.
EINVAL
-Stream. kein perfektes Übertragungsgewinde.
EINVAL
Ein anderer Thread wartet normalerweise bereits darauf, diesem wertvollen Thread beizutreten.
ESRCH
Normalerweise kann der Autorisierungs-Thread nicht gefunden werden.

Übereinstimmungen

Notizen

Nach einem erfolgreichen Aufruf von pthread_join() ist sich der genaue Aufrufer sicher, dass mein Thread verarbeitet wurde.vollendet.

Der Beitritt zu einem Ihrer Kollegen, der bereits mit Unterstützung beigetreten ist, führt zu undefiniertem Verhalten.

Die Internetverbindung ist aus einem ausreichenden Grund fehlgeschlagen, um ein Treffen des Threads zu ermöglichen (d. h. dieses Tutorial vermeiden, da alle lebenden toten Threadsverwendet einige Netzwerkressourcen, und immer wenn genug über Zombies geredet wird, haben Sie keine Zeit, neue Kleidung (oder Prozesse) zu liefern.

Es wird kein Pthread-Analogon von & Status's, waitpid (-1, 0) betrachtet, die einfach normalerweise "mit jedem abgeschlossenen Stream verbinden".Sie sollten Ihr Objektdesign wahrscheinlich überdenken.

Alle Threads bestimmter Typen, die mit Peer-to-Peer-Prozessen verknüpft sind: Jeder Thread ist mit einem Prozess mit vielen Threads verknüpft.

Beispiel

Siehe auch

Referenzen

POSIX-Wasserstraßen in der richtigen Reihenfolge für Windows - REFERENZ -Pthreads-w32

Name

pthread_timedjoin_np - muss warten, bis eine andere Nachricht abgeschlossen istPause

Lebenslauf

Beschreibung

pthread_join unterbricht die Zustellung des aufrufenden Threadsbis zum Ende des Drahtes, der mit th angezeigt wird, oder durchRufen Sie pthread_exit (3) auf und es kann dann von kommen. Seinabgesagt.

Wenn thread_return buchstäblich NULL ist und nicht wirklich ein Rückgabewert istwird an einem bestimmten Ort gespeichert, auf den thread_return zeigt. vDer Rückgabewert von th ist jeweils das Argument, das es tutpthread_exit (3) aufgelistet, oderPTHREAD_CANCELED, wenn abgebrochen.

Sauberer Gewindeknotensollte in der Lage sein, sich zu verbinden: dieser Zustand sollte nicht getrennt werdenpthread_detach (3) oderPTHREAD_CREATE_DETACHED-Aspekt für pthread_create(3)...

pthread_join Fehlercode 3

Wenn ein einfach eingehakter Thread beendet wird, vergessen Sie nicht die Artikel (ThreadHandle und Stack) sind eigentlich für einen anderen Thread getrenntFühren Sie dazu das Rennen pthread_join aus. Daher pthread_joinmuss aufgerufen werden, da für jeden angehängten Thread erstellt wird, um Speicher zu vermeidenein Leck.

pthread_timedjoin_np ist oft dasselbe wie pthread_join, außerdass das einen bestimmten ETIMEDOUT-Fehler zurückgibt, falls das Ziel isthat seinen Posten nicht vor dem Ende dieser speziellen Abstimmung verlassen. Wenn die AbstimmungEine NULL-Aufgabe, die ewig andauert, und daher unser Verhaltenidentisch mit pthread_join sein.

pthread_tryjoin_np ist dasselbe wie pthread_join, außer dasses wird EBUSY entsprechend mit einem Fehler zurückgeben, falls vorhanden, einschließlich unserer Ziel-ThreadsIch kann nicht gehen.

Mit einer bestimmten Nummer kann ein Garn warten, bis ein bestimmter vorsichtiger Faden fertig ist.Aufruf von pthread_join von einem sorgfältigen Thread und einem anderenDer Thread wartet bereits auf die Fertigstellung und gibt diesen Fehler aus.

Abbrechen

pthread_join, pthread_tryjoin_np undpthread_timedjoin_np Endungen sind Punkte. WannZweifellos wird der sorgfältige Faden beim Zurückhängen in beiden unterbrochenFunktion, Wiedergabe wird sofort fortgesetzt, undStornierung wird entwickelt, ohne auf die Übersetzung zu warten.beenden. Wenn Abbrechen angezeigt wird, während eine der Funktionen ausgeführt wird,Streams, die normalerweise nicht verbunden sind.

Rückgabewert

Bei Erfolg wird der bekannte Rückgabewert gerettet inDie Position, auf die thread_return zeigt, aber auch 0 kehrt zu zurückerror, der größte zurückgegebene Fehlercode ist nicht null.

Fehler

ESRCH
Der Stream kann nicht gefunden werden, daher entspricht er unserem angegebenen th.
EINVAL
-I-Zweig wird erlaubt sein.
EINVAL
Der andere ist pro Stream, der bereits auf sein Ende wartet.
ETIMEDOUT-Abstimmung
(pthread_timedjoin_npnur): erfolgreichbevor das sein kannbeigetreten.
EDEADLK
Die th Fehde bezieht sich auf einen Standort- und Bedingungsaufruf.

Autor

Siehe auch