Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::future

      From cppreference.com
      <cpp‎ |thread
       
       
      Concurrency support library
      Threads
      (C++11)
      (C++20)
      this_thread namespace
      (C++11)
      (C++11)
      (C++11)
      Cooperative cancellation
      Mutual exclusion
      Generic lock management
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Condition variables
      (C++11)
      Semaphores
      Latches and Barriers
      (C++20)
      (C++20)
      Futures
      (C++11)
      future
      (C++11)
      (C++11)
      Safe reclamation
      Hazard pointers
      Atomic types
      (C++11)
      (C++20)
      Initialization of atomic types
      (C++11)(deprecated in C++20)
      (C++11)(deprecated in C++20)
      Memory ordering
      (C++11)(deprecated in C++26)
      Free functions for atomic operations
      Free functions for atomic flags
       
       
      Defined in header<future>
      template<class T>class future;
      (1)(since C++11)
      template<class T>class future<T&>;
      (2)(since C++11)
      template<>class future<void>;
      (3)(since C++11)

      The class templatestd::future provides a mechanism to access the result of asynchronous operations:

      • The creator of the asynchronous operation can then use a variety of methods to query, wait for, or extract a value from thestd::future. These methods may block if the asynchronous operation has not yet provided a value.
      • When the asynchronous operation is ready to send a result to the creator, it can do so by modifyingshared state (e.g.std::promise::set_value) that is linked to the creator'sstd::future.

      Note thatstd::future references shared state that is not shared with any other asynchronous return objects (as opposed tostd::shared_future).

      Contents

      [edit]Member functions

      constructs the future object
      (public member function)[edit]
      destructs the future object
      (public member function)[edit]
      moves the future object
      (public member function)[edit]
      transfers the shared state from*this to ashared_future and returns it
      (public member function)[edit]
      Getting the result
      returns the result
      (public member function)[edit]
      State
      checks if the future has a shared state
      (public member function)[edit]
      waits for the result to become available
      (public member function)[edit]
      waits for the result, returns if it is not available for the specified timeout duration
      (public member function)[edit]
      waits for the result, returns if it is not available until specified time point has been reached
      (public member function)[edit]

      [edit]Examples

      Run this code
      #include <future>#include <iostream>#include <thread> int main(){// future from a packaged_taskstd::packaged_task<int()> task([]{return7;});// wrap the function    std::future<int> f1= task.get_future();// get a futurestd::thread t(std::move(task));// launch on a thread // future from an async()    std::future<int> f2=std::async(std::launch::async,[]{return8;}); // future from a promisestd::promise<int> p;    std::future<int> f3= p.get_future();std::thread([&p]{ p.set_value_at_thread_exit(9);}).detach(); std::cout<<"Waiting..."<<std::flush;    f1.wait();    f2.wait();    f3.wait();std::cout<<"Done!\nResults are: "<< f1.get()<<' '<< f2.get()<<' '<< f3.get()<<'\n';    t.join();}

      Output:

      Waiting...Done!Results are: 7 8 9

      [edit]Example with exceptions

      Run this code
      #include <future>#include <iostream>#include <thread> int main(){std::promise<int> p;    std::future<int> f= p.get_future(); std::thread t([&p]{try{// code that may throwthrowstd::runtime_error("Example");}catch(...){try{// store anything thrown in the promise                p.set_exception(std::current_exception());}catch(...){}// set_exception() may throw too}}); try{std::cout<< f.get();}catch(conststd::exception& e){std::cout<<"Exception from the thread: "<< e.what()<<'\n';}    t.join();}

      Output:

      Exception from the thread: Example

      [edit]See also

      (C++11)
      runs a function asynchronously (potentially in a new thread) and returns astd::future that will hold the result
      (function template)[edit]
      waits for a value (possibly referenced by other futures) that is set asynchronously
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/future&oldid=170134"

      [8]ページ先頭

      ©2009-2025 Movatter.jp