Szukam rozwiązania zaplanować usunięcie obiektu przez wątki. Dokumenty o tym, jak zachowują się deleteLater
, nie są całkiem jasne. Czy mogę wywołać tę funkcję w wątku, który nie jest właścicielem obiektu?QObject :: deleteLater przez QThread
Na przykład obiekt X jest własnością wątku A, a w wątku B chciałbym, aby obiekt X został usunięty. Ponieważ obiekt może być w trakcie przetwarzania zdarzenia (w wątku A), nie mogę go bezpiecznie usunąć, dopóki nie wróci do pętli wiadomości. Jeśli zadzwonię pod numer deleteLater
z wątku B, to jednak dokumenty będą wskazywać, że zostaną usunięte, gdy tylko wątek B powróci do pętli wiadomości.
Obecnie stosuję podejście polegające na posiadaniu sygnału emitowanego w wątku A, który jest podłączony do gniazda, które wywołuje deleteLater
. Zastanawiam się, czy jest być może łatwiejszy sposób to zrobić - jeśli rzeczywiście mogę po prostu zadzwonić deleteLater
z dowolnego wątku.
W Qt można zmienić, który wątek jest właścicielem obiektu. Czy to ci pomoże? – sashoalm
W ten sposób obiekt dostaje się do wątku. –