A value that will be available in the future, as produced by AsyncSystem.
More...
#include <CesiumAsync/Future.h>
|
| Future (Future< T > &&rhs) noexcept |
| Move constructor.
|
|
Future< T > & | operator= (Future< T > &&rhs) noexcept |
|
| Future (const Future< T > &rhs)=delete |
|
Future< T > & | operator= (const Future< T > &rhs)=delete |
|
template<typename Func > |
CesiumImpl::ContinuationFutureType_t< Func, T > | thenInWorkerThread (Func &&f) && |
| Registers a continuation function to be invoked in a worker thread when this Future resolves, and invalidates this Future. More...
|
|
template<typename Func > |
CesiumImpl::ContinuationFutureType_t< Func, T > | thenInMainThread (Func &&f) && |
| Registers a continuation function to be invoked in the main thread when this Future resolves, and invalidates this Future. More...
|
|
template<typename Func > |
CesiumImpl::ContinuationFutureType_t< Func, T > | thenImmediately (Func &&f) && |
| Registers a continuation function to be invoked immediately in whichever thread causes the Future to be resolved, and invalidates this Future. More...
|
|
template<typename Func > |
CesiumImpl::ContinuationFutureType_t< Func, T > | thenInThreadPool (const ThreadPool &threadPool, Func &&f) && |
| Registers a continuation function to be invoked in a thread pool when this Future resolves, and invalidates this Future. More...
|
|
template<typename Func > |
Future< T > | catchInMainThread (Func &&f) && |
| Registers a continuation function to be invoked in the main thread when this Future rejects, and invalidates this Future. More...
|
|
template<typename Func > |
Future< T > | catchImmediately (Func &&f) && |
| Registers a continuation function to be invoked immediately, and invalidates this Future. More...
|
|
template<typename... TPassThrough> |
Future< std::tuple< TPassThrough..., T > > | thenPassThrough (TPassThrough &&... values) && |
| Passes through one or more additional values to the next continuation. More...
|
|
T | wait () |
| Waits for the future to resolve or reject and returns the result. More...
|
|
T | waitInMainThread () |
| Waits for this future to resolve or reject in the main thread while also processing main-thread tasks. More...
|
|
bool | isReady () const |
| Determines if this future is already resolved or rejected. More...
|
|
SharedFuture< T > | share () && |
| Creates a version of this future that can be shared, meaning that its value may be accessed multiple times and multiple continuations may be attached to it. More...
|
|
|
class | AsyncSystem |
|
template<typename R > |
struct | CesiumImpl::ParameterizedTaskUnwrapper |
|
struct | CesiumImpl::TaskUnwrapper |
|
template<typename R > |
class | SharedFuture |
|
template<typename R > |
class | Promise |
|
template<typename T>
class CesiumAsync::Future< T >
A value that will be available in the future, as produced by AsyncSystem.
- Template Parameters
-
Definition at line 29 of file Future.h.
◆ catchImmediately()
template<typename T >
template<typename Func >
Registers a continuation function to be invoked immediately, and invalidates this Future.
When this Future is rejected, the continuation function will be invoked in whatever thread does the rejection. Similarly, if the Future is already rejected when catchImmediately
is called, the continuation function will be invoked immediately before this method returns.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
Any then
continuations chained after this one will be invoked with the return value of the catch callback.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 198 of file Future.h.
◆ catchInMainThread()
template<typename T >
template<typename Func >
Registers a continuation function to be invoked in the main thread when this Future rejects, and invalidates this Future.
If this Future is rejected from the main thread, the continuation function will be invoked immediately rather than queued for later execution in the main thread. Similarly, if the Future is already rejected when catchInMainThread
is called from the main thread, the continuation function will be invoked immediately before this method returns.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
Any then
continuations chained after this one will be invoked with the return value of the catch callback.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 173 of file Future.h.
◆ isReady()
Determines if this future is already resolved or rejected.
If this method returns true, it is guaranteed that wait will not block but will instead immediately return a value or throw an exception.
- Returns
- True if the future is already resolved or rejected and wait will not block; otherwise, false.
Definition at line 272 of file Future.h.
◆ share()
Creates a version of this future that can be shared, meaning that its value may be accessed multiple times and multiple continuations may be attached to it.
Calling this method invalidates the original Future.
- Returns
- The
SharedFuture
.
Definition at line 283 of file Future.h.
◆ thenImmediately()
template<typename T >
template<typename Func >
CesiumImpl::ContinuationFutureType_t<Func, T> CesiumAsync::Future< T >::thenImmediately |
( |
Func && |
f | ) |
&& |
|
inline |
Registers a continuation function to be invoked immediately in whichever thread causes the Future to be resolved, and invalidates this Future.
If the Future is already resolved, the supplied function will be called immediately in the calling thread and this method will not return until that function does.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 117 of file Future.h.
◆ thenInMainThread()
template<typename T >
template<typename Func >
CesiumImpl::ContinuationFutureType_t<Func, T> CesiumAsync::Future< T >::thenInMainThread |
( |
Func && |
f | ) |
&& |
|
inline |
Registers a continuation function to be invoked in the main thread when this Future resolves, and invalidates this Future.
If this Future is resolved from the main thread, the continuation function will be invoked immediately rather than queued for later execution in the main thread. Similarly, if the Future is already resolved when thenInMainThread
is called from the main thread, the continuation function will be invoked immediately before this method returns.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 93 of file Future.h.
◆ thenInThreadPool()
template<typename T >
template<typename Func >
Registers a continuation function to be invoked in a thread pool when this Future resolves, and invalidates this Future.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
If this Future is resolved from a thread pool thread, the continuation function will be invoked immediately rather than in a separate task. Similarly, if the Future is already resolved when thenInThreadPool
is called from a designated thread pool thread, the continuation function will be invoked immediately before this method returns.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 145 of file Future.h.
◆ thenInWorkerThread()
template<typename T >
template<typename Func >
CesiumImpl::ContinuationFutureType_t<Func, T> CesiumAsync::Future< T >::thenInWorkerThread |
( |
Func && |
f | ) |
&& |
|
inline |
Registers a continuation function to be invoked in a worker thread when this Future resolves, and invalidates this Future.
If the function itself returns a Future
, the function will not be considered complete until that returned Future
also resolves.
If this Future is resolved from a designated worker thread, the continuation function will be invoked immediately rather than in a separate task. Similarly, if the Future is already resolved when thenInWorkerThread
is called from a designated worker thread, the continuation function will be invoked immediately before this method returns.
- Template Parameters
-
Func | The type of the function. |
- Parameters
-
- Returns
- A future that resolves after the supplied function completes.
Definition at line 67 of file Future.h.
◆ thenPassThrough()
template<typename T >
template<typename... TPassThrough>
Passes through one or more additional values to the next continuation.
The next continuation will receive a tuple with each of the provided values, followed by the result of the current Future.
- Template Parameters
-
TPassThrough | The types to pass through to the next continuation. |
- Parameters
-
value | The values to pass through to the next continuation. |
- Returns
- A new Future that resolves to a tuple with the pass-through values, followed by the result of the last Future.
Definition at line 218 of file Future.h.
◆ wait()
Waits for the future to resolve or reject and returns the result.
This method must not be called from the main thread, the one that calls AsyncSystem::dispatchMainThreadTasks. Doing so can lead to a deadlock because the main thread tasks will never complete while this method is blocking the main thread.
To wait in the main thread, use waitInMainThread instead.
- Returns
- The value if the future resolves successfully.
- Exceptions
-
An | exception if the future rejected. |
Definition at line 241 of file Future.h.
◆ waitInMainThread()
Waits for this future to resolve or reject in the main thread while also processing main-thread tasks.
This method must be called from the main thread.
The function does not return until Future::isReady returns true. In the meantime, main-thread tasks are processed as necessary. This method does not spin wait; it suspends the calling thread by waiting on a condition variable when there is no work to do.
- Returns
- The value if the future resolves successfully.
- Exceptions
-
An | exception if the future rejected. |
Definition at line 257 of file Future.h.
The documentation for this class was generated from the following file:
- /home/runner/work/cesium-native/cesium-native/CesiumAsync/include/CesiumAsync/Future.h