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

FreeBSD Manual Pages

  
 
  

home | help
std::jthread::join(3)	      C++ Standard Libary	 std::jthread::join(3)

NAME
       std::jthread::join - std::jthread::join

Synopsis
	  void join();	(since C++20)

	  Blocks  the current thread until the thread identified by *this fin-
       ishes its
	  execution.

	  The completion of the	thread identified by *this  synchronizes  with
       the corresponding
	  successful return from join().

	  No  synchronization is performed on *this itself. Concurrently call-
       ing join() on the
	  same jthread object from multiple threads constitutes	 a  data  race
       that results in
	  undefined behavior.

Parameters
	  (none)

Return value
	  (none)

Postconditions
	  joinable() is	false

Exceptions
	  std::system_error if an error	occurs.

Error Conditions
	    *	  resource_deadlock_would_occur	    if	  this->get_id()    ==
       std::this_thread::get_id()
	      (deadlock	detected)
	    * no_such_process if the thread is not valid
	    * invalid_argument if joinable() is	false

Example
       // Run this code

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

	void foo()
	{
	    // simulate	expensive operation
	    std::this_thread::sleep_for(std::chrono::seconds(1));
	}

	void bar()
	{
	    // simulate	expensive operation
	    std::this_thread::sleep_for(std::chrono::seconds(1));
	}

	int main()
	{
	    std::cout << "starting first helper...\n";
	    std::jthread helper1(foo);

	    std::cout << "starting second helper...\n";
	    std::jthread helper2(bar);

	    std::cout << "waiting for helpers to finish..." << std::endl;
	    helper1.join();
	    helper2.join();

	    std::cout << "done!\n";
	}

Output:
	starting first helper...
	starting second	helper...
	waiting	for helpers to finish...
	done!

References
	    * C++20 standard (ISO/IEC 14882:2020):

		     * 32.4.3.2	Members	[thread.jthread.mem]

See also
	  detach   permits the thread to execute independently from the	thread
       handle
		   (public member function)
		   checks whether the thread  is  joinable,  i.e.  potentially
       running in parallel
	  joinable context
		   (public member function)

http://cppreference.com		  2022.07.31		 std::jthread::join(3)

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

home | help