Witam.
Czy istnieje w qt instrukcja, która jest w stanie przerwać pracę (nie czekać na zakończenie) wątku pobocznego?
Chciałbym zrobić coś takiego, że jest wątek poboczny i on coś tam robi w dużej pętli i w pewnym momencie wysyłam z wątku głównego “wiadomość” aby przerwać pracę tego wątku wykonującego pętlę.
Jest to wykonalne?
Nie zrozumiałem dokładnie części Warning. Z tego co rozumiem to wywołanie terminate() może sprawić, że mutexy się nie odblokują ale czy oprócz tego coś jeszcze, np. uszkodzić zmienne(adresy w pamięci) w trakcie ich edycji i wysypać program?
Dzięki za odpowiedź.
Dodajesz do tej pętli dodatkowy warunek, np. globalny boolean (główny wątek pisze, poboczny czyta), który mówi czy rodzic pragnie przerwać pracę tego wątku jeśli tak to logika zakańcza w sposób normalny funkcję i tyle.[quote=“renifer3, post:3, topic:528038”]
Nie zrozumiałem dokładnie części Warning. Z tego co rozumiem to wywołanie terminate() może sprawić, że mutexy się nie odblokują ale czy oprócz tego coś jeszcze, np. uszkodzić zmienne(adresy w pamięci) w trakcie ich edycji i wysypać program?
[/quote]
Aż tak chyba nie. Ale może powodować wycieki pamięci (brak dojścia przetwarzania do logiki zwalniającej alokację obiektów). Jeśli robi coś po bazie danych z tworzeniem lock-ów, to deadlocki. Ogólnie nie wiesz w którym momencie pętli będzie wątek, kiedy zostanie przerwane wykonywanie. Lepiej to zrobić zmienną logiczną po pełnym obrocie pętli, kiedy wiemy, że dany obrót został wykonany w całości.
Dziękuję, sprawdzę.