home | help
std::shared_future::wait(3)    C++ Standard Libary   std::shared_future::wait(3)

NAME
     std::shared_future::wait - std::shared_future::wait

Synopsis
	void wait() const;  (since C++11)

	Blocks	until  the  result  becomes available. valid() == true after the
     call.

	The behavior is undefined if valid() == false before the  call	to  this
     function.

Parameters
	(none)

Return value
	(none)

Exceptions
	May throw implementation-defined exceptions.

Notes
	The  implementations  are  encouraged to detect the case when valid() ==
     false before
	the call and throw a std::future_error with an error condition of
	std::future_errc::no_state.

	Calling wait on the same std::shared_future from multiple threads is not
     safe; the
	intended use is for each thread that waits on the same shared  state  to
     have a copy
	of a std::shared_future.

Example
     // Run this code

      #include <chrono>
      #include <future>
      #include <iostream>
      #include <thread>

      int fib(int n)
      {
	  if (n < 3)
	      return 1;
	  else
	      return fib(n - 1) + fib(n - 2);
      }

      int main()
      {
	  std::shared_future<int> f1 = std::async(std::launch::async, []() { re-
     turn fib(40); });
	  std::shared_future<int> f2 = std::async(std::launch::async, []() { re-
     turn fib(43); });

	  std::cout << "waiting... " << std::flush;
	  const auto start = std::chrono::system_clock::now();

	  f1.wait();
	  f2.wait();

	  const auto diff = std::chrono::system_clock::now() - start;
	  std::cout  <<  std::chrono::duration<double>(diff).count()  <<  " sec-
     onds\n";

	  std::cout << "f1: " << f1.get() << '\n';
	  std::cout << "f2: " << f2.get() << '\n';
      }

Possible output:
      waiting... 1.61803 seconds
      f1: 102334155
      f2: 433494437

See also
		   waits for the result, returns if it is not available for  the
     specified
	wait_for   timeout duration
		   (public member function)
		   waits  for  the  result, returns if it is not available until
     specified time
	wait_until point has been reached
		   (public member function)

http://cppreference.com 	   2024.06.10	     std::shared_future::wait(3)

home | help