Thread View: pl.comp.lang.c
7 messages
7 total messages
Started by Borneq
Thu, 13 Apr 2017 14:27
Jak wymusić zakończenie wątku?
Author: Borneq
Date: Thu, 13 Apr 2017 14:27
Date: Thu, 13 Apr 2017 14:27
16 lines
1557 bytes
1557 bytes
Używam #include <thread> które to wątki działają i na Linuksie i na Windows.
Mam coś takiego : za pomocą dużej ilości wątków zapisuję do bazy Neo4j.
Raz na jakiś czas zdarza się że wątek blokuje się na zapytaniu.
Wątek główny wie, jak dawno temu wątek poboczny usiłował coś zapisać do
bazy, wtedy po przekroczeniu czasu mógłby go zrestartować.
Ale
jak zrobię delete threads[i], wtedy kończy się cały program!
bo jest
~thread()
{
if (joinable())
std::terminate();
}
a join trwał będzie w nieskończoność.
Czy pobrać Id wątku i zabić go procedurą zależną od systemu
operacyjnego? gwałtownie zabity może mieć pootwierane jakieś zasoby.
Re: Jak wymusić zakończenie wątku?
Author: Sebastian Biały
Date: Thu, 13 Apr 2017 17:22
Date: Thu, 13 Apr 2017 17:22
13 lines
1493 bytes
1493 bytes
On 4/13/2017 4:27 PM, Borneq wrote: > Czy pobrać Id wątku i zabić go procedurą zależną od systemu > operacyjnego? gwałtownie zabity może mieć pootwierane jakieś zasoby. Owszem i dlatego nie rób tego, jest to absolutnie niewskazane bo jest nieprzewidywalne. Jeśli watek zablokowany jest na IO to sprawdź czy możesz do niego wysłać "sygnał" który zrobi interrupta. Niektóre bibliteki to potafią. Zazwyczj wylatują wtedy z IO z jakimś błedem. Ponadto nie ma tam timed-wait/timed-read na IO? Blokowanie watku w nieskończoność jest powodem problemów.
Re: Jak wymusić zakończenie wątku?
Author: Andyy
Date: Thu, 13 Apr 2017 17:44
Date: Thu, 13 Apr 2017 17:44
14 lines
1557 bytes
1557 bytes
W dniu 13.04.2017 o 19:22, Sebastian Biały pisze: > Jeśli watek zablokowany jest na IO to sprawdź czy możesz do niego wysłać > "sygnał" który zrobi interrupta. Niektóre bibliteki to potafią. Zazwyczj > wylatują wtedy z IO z jakimś błedem. W pthread jest pthread_cancel, czy pthread_kill jest bezpieczniejsze? > Ponadto nie ma tam timed-wait/timed-read na IO? Blokowanie watku w > nieskończoność jest powodem problemów. Można ustawić, ale w Neo4j nie ma podziału na bazy, jest jeden zbiór na komputer na wszystkie aplikacje, i ustawienie timeouta popsuło by działanie innych aplikacji, które nie wznawiają,
Re: Jak wymusić zakończenie wątku?
Author: Sebastian Biały
Date: Thu, 13 Apr 2017 17:48
Date: Thu, 13 Apr 2017 17:48
19 lines
1964 bytes
1964 bytes
On 4/13/2017 7:44 PM, Andyy wrote: >> Jeśli watek zablokowany jest na IO to sprawdź czy możesz do niego wysłać >> "sygnał" który zrobi interrupta. Niektóre bibliteki to potafią. Zazwyczj >> wylatują wtedy z IO z jakimś błedem. > W pthread jest pthread_cancel, czy pthread_kill jest bezpieczniejsze? Nie jest. Zostawia mutexy i semafory nad którymi nie masz kontroli, w stanie nieokreślonym. jesli watek czeka w IO skutki mogą być rózne w zlaezności od OSa i samego IO. >> Ponadto nie ma tam timed-wait/timed-read na IO? Blokowanie watku w >> nieskończoność jest powodem problemów. > Można ustawić, ale w Neo4j nie ma podziału na bazy, jest jeden zbiór na > komputer na wszystkie aplikacje, i ustawienie timeouta popsuło by > działanie innych aplikacji, które nie wznawiają, Nie rozumiem. Write ogólnie spedza czas na czekaniu na wolne dma I/O. Jaka róznica czy czeka w systemie czy co jakiś czas wróci co Ciebie a ty wywołasz znowu?
Re: Jak wymusić zakończenie wątku?
Author: Przemek Biernat
Date: Fri, 21 Apr 2017 20:54
Date: Fri, 21 Apr 2017 20:54
1 lines
1544 bytes
1544 bytes
A czy na IO nie można ustawić jakiegoś timeout'a dopiero coś zaczynam z tym mieszać ale wydaje się to logicznym rozwiązaniem dodałbym jeszcze flage opakowaną sekcją krytyczną i przy zgaszeniu flagi wątek milknie.
Re: Jak wymusić zakończenie wątku?
Author: Adam Wysocki
Date: Tue, 25 Apr 2017 14:48
Date: Tue, 25 Apr 2017 14:48
9 lines
1894 bytes
1894 bytes
Przemek Biernat <biernat.przemyslaw@gmail.com> wrote: > A czy na IO nie można ustawić jakiegoś timeout'a dopiero coś zaczynam z tym mieszać ale wydaje się to logicznym rozwiązaniem dodałbym jeszcze flage opakowaną sekcją krytyczną i przy zgaszeniu flagi wątek milknie. Czy mógłbyś używać przecinków i łamać linie? -- [ Email: a@b a=grp b=chmurka.net ] [ Web: http://www.chmurka.net/ ]
Re: Jak wymusić zakończenie wątku?
Author: hardest.metalband
Date: Tue, 25 Apr 2017 17:34
Date: Tue, 25 Apr 2017 17:34
1 lines
1620 bytes
1620 bytes
No mógłbym.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads