Witam :). Jestem na etapie dopieszczania mojego frameworka na WinSock i tu pojawił się mój problem. Mam sobie klasę CServer(singleton) która tworzy nowe wątki - 1 wątek oczekuje na klientów + nieznana ilość wątków(klientów). Moje pytanie brzmi, czy destruktor klasy CServer na 100% jest wywoływany podczas zamykania programu?
CServer* CServer::Get()
{
static CServer srv;
return &srv;
}
Tak tworze singleton, jeżeli to ma jakieś znaczenie. Kolejna sprawa to jak zakończyć wątki... czytałem, że nie należy używać TerminateThread(). Wątek oczekujący na klientów mógłby być zakończony jakoś siłowo, ale np w wątku klienta na początku tworzę obiekt klasy CPacket i w pętli do niego pobieram dane, dopiero za pętlą jest delete Packet;(pętla jest przerwana jak recv zwróci wartość <1, czyli przy rozłączeniu klienta, błędzie). Według mnie obiekt klasy CPacket nie zostaje zwalniany... Nie mam zbytnio pomysłu jak zrobić żeby program zaczekał aż wątki się pozamykają, pozwalniają zasoby. Liczę, że z mojego opisu da się coś zrozumieć :P. Każda sugestia, pomysł mile widziany! Z góry dzięki :)