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:
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user