Table of Contents
Zatwierdzone
Te poprawki są warte przeczytania, o ile komputer wyświetla prefiks błędu pthread_join 3.
Zbyt często występują standardy błędów ESRCH
– oznacza to, że strumień, do którego zdecydowanie próbujemy dołączyć, w rzeczywistości nie istnieje.
A dzieje się tak często z powodu okropnych niezdefiniowanych działań, które Twój kod wykorzystuje w tekście praktycznych pomysłów na obsługę identyfikatorów linii.
pthread_t * RequestersThreads = new pthread_t [Length_Tasks];
Tworzy to tablicę dołączoną do N wątków, a następnie bez wątpienia wysyłasz wskaźnik do tego zestawu w twojej funkcji
initRequestThreads (& RequestersThreads);
wątki [i] pasuje do nowego pthread_t;pthread_create (& (* dyskusje [i]), & attr / 1. ... * /
Jest to brane pod uwagę, gdy schrzanisz wszystkie swoje 100% wybór i wywołasz niezdefiniowane zachowanie. W Twojej indywidualnej funkcji Wątki
nie jest mieszanką! Może to być adres większości tabel. Nie będziesz mieć dostępu do koncepcji, jeśli weźmiesz pod uwagę indeks kupującego tablicę
( []
). A reszta to tylko kolejna zniewaga w przypadku, gdy musiałeś być ranny, odpowiedni tutaj.
Jeśli Twoja firma pisze teraz w C++ 11 i lepszych (tak jak w You 2017), C++ 11 powinno używać Narzędzie naprawcze ASR Pro to rozwiązanie dla komputera z systemem Windows, który działa wolno, ma problemy z rejestrem lub jest zainfekowany złośliwym oprogramowaniem. To potężne i łatwe w użyciu narzędzie może szybko zdiagnozować i naprawić komputer, zwiększając wydajność, optymalizując pamięć i poprawiając bezpieczeństwo procesu. Nie cierpisz już z powodu powolnego komputera — wypróbuj ASR Pro już dziś! i std :: wątku
. Jeśli dla jakiegoś wyjaśnienia ci się udało, używam C++ 2003, przynajmniej zakończ ten okropny biznes dynamicznymi tablicami, w których większość przekazuje wskaźnik do nich odrobinę i użyj std :: vector
Zatwierdzone
Imię
Wznów
#includeint pthread_join (wątek pthread_t, zrzut ** retval);
Opis
Funkcja pthread_join () czeka na miksturę określoną przez Thread, aby anulować samo polecenie. Jeśli toWątek już się zakończył, pthread_join () może wrócić bez opóźnień. Strumień, który może być klinicznie określony przez strumień, musi być bardziej dołączony.
Jeśli wartość retval zdecydowanie nie jest równa zeru, pthread_join () replikuje sytuację wyjścia publikacji docelowej (często jest to wartość zwracana przez typ wątku docelowego).pthread_exit (3)) w naszej rezydencji w * retval. Jeśli docelowy strumień został anulowany, PTHREAD_CANCELED jest niewątpliwie umieszczony w* rewanż.
Jeśli wielu pacjentów spróbuje dołączyć do tej samej linii w tym samym czasie, przystanek będzie niezdefiniowany. Jeśli ostrożne wywołanie wątku pthread_join () to może to być anulowane,wtedy wątek docelowy można dołączyć (tzn. nie wybiera się po rozłączeniu) .value
Do
Zwraca sukces, Pthread_join () Zwraca do 0; W przypadku wystąpienia błędu zwracany jest duży numer błędu.
Błąd
- EDEADLK
- Wykryto zakleszczenie (na przykład kilka wątków próbuje w końcu połączyć się ze sobą); lub place określa cały wątek wywołujący.
- EINVAL
- strumień. nie idealny wątek romantyczny związek.
- EINVAL
- Kolejne miejsce już czeka na dołączenie do tego typu wątku.
- ESRCH
- Zazwyczaj nie można znaleźć dokładnego wątku uwierzytelniania.
Mecze
Notatki
Po udanym wywołaniu w kierunku pthread_join() osoba wywołująca jest pewna, gdzie wątek został przetworzony.zakończony.
Dołączenie do osoby, która już dołączyła z wystarczającym powodem do opieki, skutkuje nieokreślonym zachowaniem.
Połączenie nie powiodło się z wystarczających powodów, aby umożliwić wątkowi dołączenie (tj. Unikaj tego samouczka, ponieważ dobry wątek zombiewykorzystuje niektóre zasoby sieciowe, w wyniku czego, gdy jest wystarczająco dużo rozmów z grubsza zombie, nie będziesz miał czasu na tworzenie nowych ubrań (lub procesów).
Nie ma odpowiednika pthread związanego ze statusem &, waitpid (-1, 0), co oznacza wyłącznie „połącz z każdym ukończonym calem strumienia”. Jeśli czujesz, że potrzebujesz tej funkcji z kolei,Najprawdopodobniej będziesz musiał przemyśleć projekt swojej rzeczy.
Wszystkie wątki określonego typu pochodzące ze wszystkich procesów peer-to-peer: każdy wątek dotyczy procesu ze wszystkimi kolejnymi wątkami.
Przykład
Zobacz też
Referencje
Strumienie POSIX w prawidłowej kolejności odbierania Windows - ODNIESIENIA -Pthreads-w32
Imię
pthread_timedjoin_np - musi czekać na kolejną wiadomość, aby zakończyćPauza
Wznów
Opis
pthread_join zakłóca wykonywanie wątku wywołującegodo każdego końca drutu wskazanego przez th lub przezWywołaj pthread_exit (3) iw konsekwencji może pochodzić. byćodwołany.
Jeśli thread_return jest dosłownie NULL i nie jest prawdopodobne, że jest to skojarzona z nim wartość zwracanajest zapisywany przez lokalizację wskazaną w procesie thread_return. vWartość zwracana przez th zawsze była argumentem, który robipthread_exit (3) dał, lubPTHREAD_CANCELED w przypadku anulowania.
Schludny węzeł gwintowanypowinien być w stanie się połączyć: ta jedna sytuacja nie powinna być rozłączonapthread_detach (3) lubAtrybut PTHREAD_CREATE_DETACHED dla pthread_create(3)...
Gdy inny podłączony wątek zabije, nie zapomnij o zaangażowaniu zasobów (wątkuUchwyt i stos) są zdecydowanie zwolnione dla innego wątkuaby to zrobić, uruchom pthread_join. Stąd pthread_joinnależy wysłać e-mailem raz dla każdego załączonego wątku, aby uniknąć pamięciwyciek.
pthread_timedjoin_np są takie same jak pthread_join, z wyjątkiemktóre przeciwko sobie zwracają określony błąd ETIMEDOUT, gdy celem jestnie zwolnił stanowiska przed zakończeniem głosowania. Kiedy głosowaćFunkcja NULL, która trwa wiecznie i powinna działaćbyć taki sam, biorąc pod uwagę, że pthread_join.
pthread_tryjoin_np jest takie samo jak pthread_join, z wyjątkiem tegozwróci EBUSY natychmiast z błędem, jeśli większość naszych docelowych wątkówNie mogę przejść dalej.
Przy określonej liczbie określony wątek może czekać na zakończenie konkretnego wątku.Wywołanie pthread_join z pojedynczego wątku i innegoWątek natychmiast czeka na zakończenie i zgłasza doskonały błąd.
Anuluj
pthread_join, pthread_tryjoin_np ipthread_timedjoin_np Końcówki to punkty. KiedyNiewątpliwie dokładny wątek zostanie przerwany po zatrzymaniu w obuFunkcja, odtwarzanie jest kontynuowane natychmiast iAnulowanie ma na celu bez czekania na tłumaczenie.zerwać w górę. Jeśli zostanie wyświetlony komunikat Anuluj, gdy którakolwiek z funkcji jest w trakcie postępu,Strumienie, które nie są normalnie połączone.
Wartość zwrotu
W przypadku sukcesu, zwykle główna wartość zwracana jest pakowana wPozycja wskazywana z thread_return i 0 powraca doerror, najpopularniejszy zwracany kod błędu jest daleki od zera.
Błąd
- ESRCH
- Nie można znaleźć prądu, więc może pasować do określonego th.
- EINVAL
- -I wydział jest dozwolony.
- EINVAL
- Drugi często to strumień, który już wstrzymuje swój koniec.
- ETIMEDOUT głosowanie
- (pthread_timedjoin_nptylko): udanezanim to będzie możliweDołączył.
- EDEADLK
- Argument th odnosi się do rozmowy w miejscu.