diff options
Diffstat (limited to 'src/concurrent/qtconcurrentrun.cpp')
-rw-r--r-- | src/concurrent/qtconcurrentrun.cpp | 52 |
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 |