summaryrefslogtreecommitdiffstats
path: root/src/concurrent/qtconcurrentrun.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/concurrent/qtconcurrentrun.cpp')
-rw-r--r--src/concurrent/qtconcurrentrun.cpp52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/concurrent/qtconcurrentrun.cpp b/src/concurrent/qtconcurrentrun.cpp
index 880441cfc3..4ab1399c0c 100644
--- a/src/concurrent/qtconcurrentrun.cpp
+++ b/src/concurrent/qtconcurrentrun.cpp
@@ -47,63 +47,63 @@
separate thread.
\ingroup thread
-
+
This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
The QtConcurrent::run() function runs a function in a separate thread.
The return value of the function is made available through the QFuture API.
-
+
\section1 Running a Function in a Separate Thread
-
+
To run a function in another thread, use QtConcurrent::run():
-
+
\snippet code/src_concurrent_qtconcurrentrun.cpp 0
-
+
This will run \e aFunction in a separate thread obtained from the default
QThreadPool. You can use the QFuture and QFutureWatcher classes to monitor
the status of the function.
-
+
\section1 Passing Arguments to the Function
Passing arguments to the function is done by adding them to the
QtConcurrent::run() call immediately after the function name. For example:
-
+
\snippet code/src_concurrent_qtconcurrentrun.cpp 1
-
+
A copy of each argument is made at the point where QtConcurrent::run() is
called, and these values are passed to the thread when it begins executing
the function. Changes made to the arguments after calling
QtConcurrent::run() are \e not visible to the thread.
-
+
\section1 Returning Values from the Function
-
+
Any return value from the function is available via QFuture:
-
+
\snippet code/src_concurrent_qtconcurrentrun.cpp 2
-
+
As documented above, passing arguments is done like this:
-
+
\snippet code/src_concurrent_qtconcurrentrun.cpp 3
-
+
Note that the QFuture::result() function blocks and waits for the result
to become available. Use QFutureWatcher to get notification when the
function has finished execution and the result is available.
-
+
\section1 Additional API Features
-
+
\section2 Using Member Functions
-
+
QtConcurrent::run() also accepts pointers to member functions. The first
argument must be either a const reference or a pointer to an instance of
the class. Passing by const reference is useful when calling const member
functions; passing by pointer is useful for calling non-const member
functions that modify the instance.
-
+
For example, calling QByteArray::split() (a const member function) in a
separate thread is done like this:
-
+
\snippet code/src_concurrent_qtconcurrentrun.cpp 4
-
+
Calling a non-const member function is done like this:
\snippet code/src_concurrent_qtconcurrentrun.cpp 5
@@ -115,17 +115,17 @@
\l{http://www.boost.org/libs/bind/bind.html}{Boost} or
\l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}
{C++ TR1 Library Extensions}.
-
+
You can use boost::bind() or std::tr1::bind() to \e bind a number of
arguments to a function when called. There are number of reasons for doing
this:
-
+
\list
\li To call a function that takes more than 5 arguments.
\li To simplify calling a function with constant arguments.
\li Changing the order of arguments.
\endlist
-
+
See the documentation for the relevant functions for details on how to use
the bind API.
@@ -137,14 +137,14 @@
/*!
\fn QFuture<T> QtConcurrent::run(Function function, ...);
\relates <QtConcurrentRun>
-
+
Runs \a function in a separate thread. The thread is taken from the global
QThreadPool. Note that the function may not run immediately; the function
will only be run when a thread is available.
-
+
T is the same type as the return value of \a function. Non-void return
values can be accessed via the QFuture::result() function.
-
+
Note that the QFuture returned by QtConcurrent::run() does not support
canceling, pausing, or progress reporting. The QFuture returned can only
be used to query for the running/finished status and the return value of