kończenie programu przed końcem wątku

0

Czy ktoś z was wie co dzieje się z systemem jeśli program zakończy działanie i zostawi w użyciu jakieś wątki?
Mam problem z uzyskiwaniem adresu IP z serwera DNS w sposób nie blokujący. Wykorzystuję funkcję getaddrinfo która w sprzyjających warunkach zwraca sterowanie niemal od razu. Niestety czasem mogą wystąpić opóźnienia, a nie chcę blokować działania programu. Umieściłem ją w innym wątku który ma odebrać adres IP i przekazać do wątku głównego. Jednak co się stanie jeśli w trakcie oczekiwania na adres IP użytkownik zamknie apkę? Powinienem zostawić taki wątek w spokoju i niech system sobie z nim radzi czy zabić go za pomocą TerminateThread? Znacie może inną funkcję, którą mogę uzyskać adres serwera? I mam namyśli coś innego niż getaddrinfoex ponieważ nie działa na win 7 i vista.

0

O który system operacyjny chodzi?

1

Jednak co się stanie jeśli w trakcie oczekiwania na adres IP użytkownik zamknie apkę?

Nic się nie stanie, zamykany proces wyparowuje z systemu.

Powinienem zostawić taki wątek w spokoju i niech system sobie z nim radzi czy zabić go za pomocą TerminateThread?

Ani jedno ani drugie. Powinno się poinformować dowolnym własnym sposobem wszystkie wątki o tym że mają się zamknąć, wątki się same zamykają a główny czeka i dopiero zamyka program.
Taka jest sytuacja idealna.
Problemem jednak mogą być funkcje blokujące.

Funkcja GetAddrInfoEx działa pod Vistą, ale potrafi działać asynchronicznie dopiero od Windows 8. Trudno.

Dopilnuj by w normalnym przypadku (czyli gdy wątek nie wisi) wszystko było zamykane prawidłowo, a wątek zamyka się od wewnątrz.
W rzadkim przypadku gdy użytkownik akurat zamyka program wątek zostanie ubity automatycznie.

0

O który system operacyjny chodzi?

Linux i Windows. Jak jest różnica to krótkie wyjaśnienie jaka. Ewentualnie jak jest w jednym z tych systemów.

Ani jedno ani drugie. Powinno się poinformować dowolnym własnym sposobem wszystkie wątki o tym że mają się zamknąć, wątki się same zamykają a główny czeka i dopiero zamyka program.
Taka jest sytuacja idealna.

Tak to prawda tylko, że w skrajnym wypadku będę musiał czekać być może nawet 5s (może więcej w zależności jaki timeout ma funkcja GetAddrInfo).

Jeśli zamykany proces wyparowuje z systemu i nie przeszkadza mu ten jeden wątek to zostawię takie rozwiązanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1