Review Request: Avoid terminating a QThread in kio/kio/hostinfo.cpp
Dawit Alemayehu
adawit at kde.org
Wed Aug 17 06:40:51 BST 2011
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/102238/
-----------------------------------------------------------
(Updated Aug. 17, 2011, 5:40 a.m.)
Review request for kdelibs, David Faure and Thiago Macieira.
Changes
-------
- Modified the last patch so that the lookup thread is recycled and reused instead of being discarded.
- Moved the timeout based name lookup code into an overloaded function in HostInfoAgentPrivate.
- Changed keywords "signals" -> "Q_SIGNALS" and "slots" -> "Q_SLOTS".
Summary (updated)
-------
The attached patch is an alternate approach to address the issue of crashes that arise from terminating an active thread than the one proposed at https://git.reviewboard.kde.org/r/102179/. With this patch the function "QHostInfo::lookupHost(QString, int)" avoids the use of QThread::terminate with the following fairly simple changes:
- Connect its finished signal to its parent deleteLater slot in the ctor so that the thread is automatically deleted later.
- Store the looked up DNS info in the global cache to avoid unnecessary queries for the same request.
- Check for cached DNS information and avoid doing reverse look ups before resorting to performing DNS queries in a separate thread.
Diffs (updated)
-----
kio/kio/hostinfo.cpp 344b1d8
Diff: http://git.reviewboard.kde.org/r/102238/diff
Testing (updated)
-------
Tested with the following code based on Albert's post.
#include "hostinfo_p.h"
#include <QtGui/QApplication>
#include <QtCore/QElapsedTimer>
#include <QtNetwork/QHostInfo>
int main(int a, char **b)
{
QApplication app(a, b);
QElapsedTimer t;
t.start();
qDebug() << KIO::HostInfo::lookupHost("www.kde.org", 0).addresses();
qDebug() << "Time:" << t.elapsed() << "ms";
}
Thanks,
Dawit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20110817/88546d01/attachment.htm>
More information about the kde-core-devel
mailing list