qt5base-lts/tests/auto
Marc Mutz c55aec2ed7 QFutureInterface: allow to work with a QThreadPool != globalInstance()
Background:
It is often necessary/advisable to schedule tasks on thread pools !=
globalInstance(). As Herb Sutter writes in
http://www.drdobbs.com/parallel/use-thread-pools-correctly-keep-tasks-sh/216500409
and the Qt Training Material stresses, tasks you schedule on a (global)
thread pool should be non-blocking, which currently rules out using any of
the QtConcurrent functions for, say, file I/O.

Nonetheless it's often convenient to have thread pools also for file I/O, as
the thumbnail viewer exercise in the Qt Training Material shows. In this
case, you'd use a dedicated thead pool, leaving the global thread pool for
CPU-bound tasks.

Yet, none of the QtConcurrent functions allow to pick the QThreadPool
instance on which to schedule the work created with them.

This patch prepares for them to do so.

This is the first part of the forward-port of
https://qt.gitorious.org/qt/qt/merge_requests/1281.

Implement by using a new QThreadPool* member that defaults to nullptr,
and adding setThreadPool to set this member, then using it in lieu of
QThreadPool::globalInstance() everywhere.

I chose to leave m_pool == nullptr to mean globalInstance() to avoid
creating the global instance whenever a QFuture is created, even if the
future represents the result of a calculation not run on the global thread
pool.

[ChangeLog][QtCore][QFuture] Can now be used with any QThreadPool, not
just globalInstance().

Task-number: QTBUG-17220
Change-Id: I4e1dc18d55cf60141b2fa3d14e2d44a3e9e74858
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 18:04:56 +02:00
..
android Android: Add uninstall option. 2014-07-21 20:38:00 +02:00
bic/data test: Add 5.1.0 bic data for linux-gcc-ia32 2013-07-08 21:47:36 +02:00
cmake Fix cmake-test for Dynamic OpenGL. 2014-08-05 06:34:33 +02:00
compilerwarnings/data Update copyright year in Digia's license headers 2013-01-18 09:07:35 +01:00
concurrent Add diagnostic output to tst_QtConcurrentIterateKernel. 2014-04-09 10:43:32 +02:00
corelib QFutureInterface: allow to work with a QThreadPool != globalInstance() 2014-08-05 18:04:56 +02:00
dbus Fix dangling pointer dereferencing 2014-05-09 03:39:34 +02:00
gui Introduce QRasterWindow 2014-08-05 16:47:42 +02:00
guiapplauncher Update the documentation after moving examples. 2011-07-05 21:19:08 +02:00
installed_cmake Add a unit test for testing Qt in its install location. 2013-07-02 23:08:54 +02:00
network Merge remote-tracking branch 'origin/5.3' into dev 2014-07-29 12:56:06 +02:00
opengl Merge remote-tracking branch 'origin/stable' into dev 2014-05-06 16:50:03 +02:00
other Remove d3dcompiler_qt 2014-08-05 16:44:13 +02:00
printsupport QPrinter - Expect failure of QPrinter page size test 2014-03-17 13:46:29 +01:00
shared iOS: Fix compilation of some basic tests 2014-01-17 11:04:43 +01:00
sql Use sched_yield instead of pthread_yield 2014-05-05 22:40:49 +02:00
testlib Merge remote-tracking branch 'origin/stable' into dev 2014-05-22 07:46:17 +02:00
tools add priority sorting to $$resolve_depends() 2014-07-30 10:31:53 +02:00
widgets Merge remote-tracking branch 'origin/5.3' into dev 2014-08-04 09:51:36 +02:00
xml Speed up tst_QXmlSimpleReader. 2014-05-08 16:06:11 +02:00
auto.pro iOS: Enable building of basic tests 2014-01-22 12:35:17 +01:00
network-settings.h network test settings: support newer FTP server versions 2013-08-28 12:45:34 +02:00
qtest-config.h Update copyright year in Digia's license headers 2013-01-18 09:07:35 +01:00
test.pl Whitespace cleanup: remove trailing whitespace 2013-03-16 20:22:50 +01:00