Forbes: Microshifts, Quiet Cracking And The End Of The 9-5: What The Future Workday Really Looks Like
Microshifts, Quiet Cracking And The End Of The 9-5: What The Future Workday Really Looks Like
The class template std::future provides a mechanism to access the result of asynchronous operations: An asynchronous operation (performed via std::async, std::packaged_task, or std::promise) can provide a std::future object to the creator of that asynchronous operation. The creator of the asynchronous operation can then use a variety of methods to query, wait for, or extract a value from the ...
If the future is the result of a call to std::async that used lazy evaluation, this function returns immediately without waiting. This function may block for longer than timeout_duration due to scheduling or resource contention delays. The standard recommends that a steady clock is used to measure the duration.
Transfers the shared state of *this, if any, to a std::shared_future object. Multiple std::shared_future objects may reference the same shared state, which is not possible with std::future. After calling share on a std::future, valid() == false.
Checks if the future refers to a shared state. This is the case only for futures that were not default-constructed or moved from (i.e. returned by std::promise::get_future (), std::packaged_task::get_future () or std::async ()) until the first time get () or share () is called. The behavior is undefined if any member function other than the destructor, the move-assignment operator, or valid is ...
The promise is the "push" end of the promise-future communication channel: the operation that stores a value in the shared state synchronizes-with (as defined in std::memory_order) the successful return from any function that is waiting on the shared state (such as std::future::get).