Witam.
Jak bezpiecznie zamknąć wątek?
Bo chyba nie TerminateThread - to podobno niebezpiecznie.
Przypuśćmy mam taką sytuacje:
Mam kilka wątków, które wykonują czynności [obsługa zdarzeń, locki, alokowanie pamięci, czynności trwające kilkadziesiąt sekund(np pętla sleep), oczekiwanie na półączenie z klientem (funkcja accept) ].
Nagle muszę przerwać wszystko, żeby wznowić to za jakiś czas (kilka minut).
Mógłbym użyc tu TerminateThread, ale co jak wątek się przerwie na locku?, co jak zaalokuje pamięć - przecieŻ jej nie zwolni, co jak będzie obsługiwać zdarzenie i nie przekaże systemowi zdarzeń, że już skonczył je używać?
No to wymyśliłem sobie, że każdy wątek będzie miał swoją zmienną, i każdy wątek będzie sprawdzał czy nie jest tam true, jak true to wtedy przerywa wątek (funkcja przerywająca wszystkie wątki by ustawiała true każdemu wątkowi żeby się zamknął)
No i jest problem.
Wątki korzystają z dziesiątek funkcji, które mają pętle ze sleepami itd, czekającą nawet kilkadziesiąt sekund - czyli bym musiał w dziesiątkach funkcji, w każdej pętli sprawdzać id wątku i sprawdzać czy zmienna zamykająca ten wątek jest równa true i wtedy ewentualnie rzucić wyjątek, który przerwie wszystkie funkcje... bezsens.
A poza tym, co jak wątek aktualnie korzysta z accept (funkcja czekająca, aż klient się połączy)
Wtedy w ogóle nie będzie możliwości sprawdzić zmiennej zamykające wątek...
Nie mam pojęcia co zrobić.
Proszę o pomoc, z góry dziękuje.