summaryrefslogtreecommitdiffstats
path: root/src/corelib/doc/src/threads-basics.qdoc
diff options
context:
space:
mode:
authorSze Howe Koh <szehowe.koh@gmail.com>2013-09-08 16:48:04 +0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-14 02:58:12 +0200
commit5852ddb110e63cc9d2271431a7776978c2249877 (patch)
tree0d12d10461b20aca6de22a7923b769d55aa65fe4 /src/corelib/doc/src/threads-basics.qdoc
parentcddd16c2d564148f4d97dac894a054de1728641a (diff)
Doc: Move multithreading guidelines to the overview page
It's helpful to see how to choose among different solutions, right after seeing short descriptions of all the solutions. - Some minor rewording was done during the move - The example about polling ports in a new thread was removed because there are better ways to do that without threads. Change-Id: I2cb571a4dbf9be93fb0ec88c60fb7406996c345b Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/doc/src/threads-basics.qdoc')
-rw-r--r--src/corelib/doc/src/threads-basics.qdoc66
1 files changed, 3 insertions, 63 deletions
diff --git a/src/corelib/doc/src/threads-basics.qdoc b/src/corelib/doc/src/threads-basics.qdoc
index dd5267f0ba..353906f11a 100644
--- a/src/corelib/doc/src/threads-basics.qdoc
+++ b/src/corelib/doc/src/threads-basics.qdoc
@@ -172,69 +172,9 @@
\section2 Which Qt Thread Technology Should You Use?
- Sometimes you want to do more than just running a method in the context of
- another thread. You may want to have an object which lives in another
- thread that provides a service to the GUI thread. Maybe you want another
- thread to stay alive forever to poll hardware ports and send a signal to
- the GUI thread when something noteworthy has happened. Qt provides
- different solutions for developing threaded applications. The right
- solution depends on the purpose of the new thread as well as on the
- thread's lifetime.
-
- \table
- \header
- \li Lifetime of thread
- \li Development task
- \li Solution
- \row
- \li One call
- \li Run one method within another thread and quit the thread when the
- method is finished.
- \li Qt provides different solutions:
- \list
- \li Write a function and run it with QtConcurrent::run()
- \li Derive a class from QRunnable and run it in the global thread
- pool with QThreadPool::globalInstance()->start()
- \li Derive a class from QThread, reimplement the QThread::run()
- method and use QThread::start() to run it.
- \endlist
-
- \row
- \li One call
- \li Operations are to be performed on all items of a container.
- Processing should be performed using all available cores. A common
- example is to produce thumbnails from a list of images.
- \li QtConcurrent provides the \l{QtConcurrent::}{map()} function for
- applying operations on every container element,
- \l{QtConcurrent::}{filter()} for selecting container elements, and
- the option of specifying a reduce function for combining the
- remaining elements.
- \row
- \li One call
- \li A long running operation has to be put in another thread. During the
- course of processing, status information should be sent to the GUI
- thread.
- \li Use QThread, reimplement run and emit signals as needed. Connect the
- signals to the GUI thread's slots using queued signal/slot
- connections.
-
- \row
- \li Permanent
- \li Have an object living in another thread and let it perform different
- tasks upon request.
- This means communication to and from the worker thread is required.
- \li Derive a class from QObject and implement the necessary slots and
- signals, move the object to a thread with a running event loop and
- communicate with the object over queued signal/slot connections.
- \row
- \li Permanent
- \li Have an object living in another thread, let the object perform
- repeated tasks such as polling a port and enable communication with
- the GUI thread.
- \li Same as above but also use a timer in the worker thread to implement
- polling. However, the best solution for polling is to avoid it
- completely. Sometimes using QSocketNotifier is an alternative.
- \endtable
+ See the \l{Multithreading Technologies in Qt} page for an introduction to the
+ different approaches to multithreading to Qt, and for guidelines on how to
+ choose among them.
\section1 Qt Thread Basics