Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::promis...thread_exit(3)  C++ Standard Libary std::promis...thread_exit(3)

NAME
       std::promise::set_value_at_thread_exit				     -
       std::promise::set_value_at_thread_exit

Synopsis
	  void set_value_at_thread_exit(  const	 R&	     (member  only  of
       generic promise
	  value	);				      (1) template)
							  (since C++11)
							  (member    only   of
       generic promise
	  void set_value_at_thread_exit( R&& value ); (2) template)
							  (since C++11)
							  (member   only    of
       promise<R&> template
	  void set_value_at_thread_exit( R& value );  (3) specialization)
							  (since C++11)
							  (member    only   of
       promise<void>
	  void set_value_at_thread_exit()	      (4) template specializa-
       tion)
							  (since C++11)

	  Stores the value into	the shared  state  without  making  the	 state
       ready immediately.
	  The  state  is  made	ready when the current thread exits, after all
       variables with
	  thread-local storage duration	have been destroyed.

	  The  operation   behaves   as	  though   set_value,	set_exception,
       set_value_at_thread_exit,
	  and  set_exception_at_thread_exit  acquire a single mutex associated
       with the	promise
	  object while updating	the promise object.

	  An exception is thrown if there is no	shared	state  or  the	shared
       state already
	  stores a value or exception.

	  Calls	 to  this  function  do	not introduce data races with calls to
       get_future
	  (therefore they need not synchronize with each other).

Parameters
	  value	- value	to store in the	shared state

Return value
	  (none)

Exceptions
	  std::future_error on the following conditions:

	    * *this has	no shared state. The error code	is set to no_state.

	    * The shared state already stores a	value or exception. The	 error
       code is set to
	      promise_already_satisfied.

	  Additionally:

	  1-2) Any exception thrown by the copy	constructor of value
	  3) Any exception thrown by the move constructor of value

Example
       // Run this code

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

	int main()
	{
	    using namespace std::chrono_literals;
	    std::promise<int> p;
	    std::future<int> f = p.get_future();
	    std::thread([&p] {
		  std::this_thread::sleep_for(1s);
		  p.set_value_at_thread_exit(9);
	    }).detach();

	    std::cout << "Waiting..." << std::flush;
	    f.wait();
	    std::cout << "Done!\nResult	is: " << f.get() << '\n';
	}

Output:
	Waiting...Done!
	Result is: 9

See also
	  set_value sets the result to specific	value
		    (public member function)

http://cppreference.com		  2022.07.31	  std::promis...thread_exit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::promise::set_value_at_thread_exit&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help