Verbessere Shutdown-Logik und Ressourcenbereinigung in Server- und ChatRoom-Klassen

- Implementiere eine ordnungsgemäße Bereinigung von Server- und ChatRoom-Ressourcen beim Herunterfahren.
- Aktualisiere die Destruktoren in `ChatRoom` und `Server`, um sicherzustellen, dass alle Benutzer-Threads gestoppt und aufgeräumt werden.
- Füge Überprüfungen hinzu, um doppelte Stop-Vorgänge zu vermeiden und die Stabilität zu erhöhen.
- Optimiere die Logging-Ausgaben für den Server-Stopp-Prozess zur besseren Nachverfolgbarkeit.
This commit is contained in:
Torsten Schulz (local)
2025-09-04 14:32:12 +02:00
parent 8d0d1bc187
commit 2c6901f989
5 changed files with 79 additions and 9 deletions

View File

@@ -37,7 +37,31 @@ namespace Yc
thread = std::make_unique<std::thread>(&ChatRoom::run, this);
}
ChatRoom::~ChatRoom() = default;
ChatRoom::~ChatRoom() {
setStop();
// Stop all users first
for (auto& user : _users) {
if (user) {
user->stop();
}
}
// Wait for all user threads to finish
for (auto& user : _users) {
if (user && user->thread.joinable()) {
user->thread.join();
}
}
// Clear users list
_users.clear();
// Now stop and join the room thread
if (thread && thread->joinable()) {
thread->join();
}
}
void ChatRoom::run()
{