CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 23 Jul 2025 11:42:47 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/future/packaged_task/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Jul 2025 11:42:47 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"8209-P1YptULIQ2QXDXJmjyHm4l4R7XA"
Content-Encoding: gzip
A packaged_task wraps a callable element and allows its result to be retrieved asynchronously.
It is similar to std::function, but transferring its result automatically to a future object.
The object contains internally two elements:
The shared state is associated to a future object by calling member get_future. After the call, both objects share the same shared state:
- The packaged_task object is the asynchronous provider and is expected to set the shared state as ready at some point by calling the stored task.
- The future object is an asynchronous return object that can retrieve the value of the shared state, waiting for it to be ready, if necessary.
The lifetime of the shared state lasts at least until the last object with which it is associated releases it or is destroyed. Therefore it can survive the packaged_task object that obtained it in the first place if associated also to a future.
Possible output:
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<future>
classes
-
futureC++11
-
future_errorC++11
-
packaged_taskC++11
-
promiseC++11
-
shared_futureC++11
-
enum classes
-
future_errcC++11
-
future_statusC++11
-
launchC++11
-
functions
-
asyncC++11
-
future_categoryC++11
-
packaged_task
-
packaged_task::~packaged_taskC++11
-
packaged_task::packaged_taskC++11
member functions
-
packaged_task::get_futureC++11
-
packaged_task::make_ready_at_thread_exitC++11
-
packaged_task::operator()C++11
-
packaged_task::operator=C++11
-
packaged_task::resetC++11
-
packaged_task::swapC++11
-
packaged_task::validC++11
-
non-member overloads
-
swap (packaged_task)C++11
-
non-member specializations
class template
<future>
std::packaged_task
template <class T> packaged_task; // undefinedtemplate <class Ret, class... Args> class packaged_task<Ret(Args...)>;
Packaged task
It is similar to std::function, but transferring its result automatically to a future object.
The object contains internally two elements:
- A stored task, which is some callable object (such as a function pointer, pointer to member or function object) whose call signature shall take arguments of the types in Args... and return a value of type Ret.
- A shared state, which is able to store the results of calling the stored task (of type Ret) and be accessed asynchronously through a future.
The shared state is associated to a future object by calling member get_future. After the call, both objects share the same shared state:
- The packaged_task object is the asynchronous provider and is expected to set the shared state as ready at some point by calling the stored task.
- The future object is an asynchronous return object that can retrieve the value of the shared state, waiting for it to be ready, if necessary.
The lifetime of the shared state lasts at least until the last object with which it is associated releases it or is destroyed. Therefore it can survive the packaged_task object that obtained it in the first place if associated also to a future.
Member functions
- (constructor)
- Construct packaged task (public member function)
- (destructor)
- Destroy packaged task (public member function)
- operator=
- Move-assign packaged_task (public member function)
- valid
- Check for valid shared state (public member function)
- get_future
- Get future (public member function)
- operator()
- Call stored task (public member function)
- make_ready_at_thread_exit
- Call stored task and make ready at thread exit (public member function)
- reset
- Reset task (public member function)
- swap
- Swap packaged_task (public member function)
Non-member function overloads
- swap (packaged_task)
- Swap packaged_task (function template)
Non-member class specializations
- uses_allocator<packaged_task>
- Uses allocator for packaged_task (class template)
Example
|
|
Possible output:
10 9 8 7 6 5 4 3 2 1 Lift off! The countdown lasted for 10 seconds. |
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us