CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 22 Jul 2025 09:59:25 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/future/future/
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 22 Jul 2025 09:59:26 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"7d72-oaY5q0Dc4t/8GZW+HawZf3GslE4"
Content-Encoding: gzip
A future is an object that can retrieve a value from some provider object or function, properly synchronizing this access if in different threads.
"Valid" futures are future objects associated to a shared state, and are constructed by calling one of the following functions:
future objects are only useful when they are valid. Default-constructed future objects are not valid (unless move-assigned a valid future).
Calling future::get on a valid future blocks the thread until the provider makes the shared state ready (either by setting a value or an exception to it). This way, two threads can be synchronized by one waiting for the other to set a value.
The lifetime of the shared state lasts at least until the last object with which it is associated releases it or is destroyed. Therefore, if associated to a future, the shared state can survive the object from which it was obtained in the first place (if any).
They operate in the same way as the unspecialized template, except for the return value of their future::get member function.
Possible output (may take more or less time):
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
-
future
-
future::~futureC++11
-
future::futureC++11
member functions
-
future::getC++11
-
future::operator=C++11
-
future::shareC++11
-
future::validC++11
-
future::waitC++11
-
future::wait_forC++11
-
future::wait_untilC++11
-
class template
<future>
std::future
template <class T> future;template <class R&> future<R&>; // specialization : T is a reference type (R&)template <> future<void>; // specialization : T is void
Future
"Valid" futures are future objects associated to a shared state, and are constructed by calling one of the following functions:
future objects are only useful when they are valid. Default-constructed future objects are not valid (unless move-assigned a valid future).
Calling future::get on a valid future blocks the thread until the provider makes the shared state ready (either by setting a value or an exception to it). This way, two threads can be synchronized by one waiting for the other to set a value.
The lifetime of the shared state lasts at least until the last object with which it is associated releases it or is destroyed. Therefore, if associated to a future, the shared state can survive the object from which it was obtained in the first place (if any).
Member functions
- (constructor)
- Construct future (public member function)
- (destructor)
- Destroy future (public member function)
- operator=
- Move-assign future (public member function)
- share
- Get shared future (public member function)
- get
- Get value (public member function)
- valid
- Check for valid shared state (public member function)
- wait
- Wait for ready (public member function)
- wait_for
- Wait for ready during time span (public member function)
- wait_until
- Wait for ready until time point (public member function)
Template specializations
Two specific future specializations are declared in <future>:
|
|
Example
|
|
Possible output (may take more or less time):
checking, please wait........................ 444444443 is prime. |
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