Threaded QTcpServer - Signal Probleme
Verfasst: 1. Mai 2007 22:02
Hallo!
Ich habe eine Klasse Server, abgeleitet von QTcpServer.
Bei jeder incomingConnection() wird ein Thread erstellt, der dann die jeweilige Verbindung bearbeitet.
Thread::run() ist leer, dagegen sind readRequest() und disconnectClient() implementiert.
Die Sockets werden auch bearbeitet, aber das Signal finished() wird nie ausgelöst! Wenn man im Taskmanager den Arbeitspeicherverbrauch beobachtet, merkt man einen kontinuierlichen Anstieg! D.h., die Thread Objekte werden wohl nicht gelöscht!
Was kann ich dagegen machen? Warum wird finished() nicht ausgelöst?
danke schon mal
cal
Ich habe eine Klasse Server, abgeleitet von QTcpServer.
Bei jeder incomingConnection() wird ein Thread erstellt, der dann die jeweilige Verbindung bearbeitet.
Code: Alles auswählen
void Server::incomingConnection(int socketDescriptor)
{
Thread *thread = new Thread(socketDescriptor, this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
}Code: Alles auswählen
Thread::Thread(int socketDescriptor, QObject *parent)
: QThread(parent), socketDescriptor(socketDescriptor)
{
QTcpSocket *tcpSocket = new QTcpSocket(this);
tcpSocket->setSocketDescriptor(socketDescriptor);
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readRequest()));
connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(disconnectClient()));
}Die Sockets werden auch bearbeitet, aber das Signal finished() wird nie ausgelöst! Wenn man im Taskmanager den Arbeitspeicherverbrauch beobachtet, merkt man einen kontinuierlichen Anstieg! D.h., die Thread Objekte werden wohl nicht gelöscht!
Was kann ich dagegen machen? Warum wird finished() nicht ausgelöst?
danke schon mal
cal