ソケットへの接続ごとに 1 つの新しいスレッドを作成する (やや) 単純なプログラムがあります。
void TelnetServer::incomingConnection(qintptr socketDescriptor)
{
TelnetConnection *thread = new TelnetConnection(socketDescriptor);
connect(thread, SIGNAL(shutdownRequested()), m_controller, SLOT(shutdown()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
新しいスレッドが作成された後、次のように QThreads (TelnetConnection) を作成した親のすべての子のリストを qDebug に出力します。
QList<QObject*> activeTelnetConnections = m_telnetserver->findChildren <QObject *> (); // Find all QThreads that children of telnetserver
qDebug() << "Children: " << activeTelnetConnections;
私の QThreads は Qobject から派生しているので、QThreads のリストなどを見ることを期待しています。しかし、Qthreads が見つかりません! これは私が見るすべてです:
Children: (QNativeSocketEngine(0x7eb880) , QSocketNotifier(0x7ea5f0) )
子スレッドが表示されないのはなぜですか? これは、スレッドが親オブジェクトに関連付けられなくなったことを意味しますか? それとも、ここで何か間違ったことをしていますか...