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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::jthread::detach - std::jthread::detach

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

	  Separates  the thread	of execution from the jthread object, allowing
       execution to
	  continue independently. Any allocated	resources will be  freed  once
       the thread exits.

	  After	calling	detach *this no	longer owns any	thread.

Parameters
	  (none)

Return value
	  (none)

Postconditions
	  joinable is false

Exceptions
	  std::system_error if joinable() == false or an error occurs.

Example
       // Run this code

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

	void independentThread()
	{
	    std::cout << "Starting concurrent thread.\n";
	    std::this_thread::sleep_for(std::chrono::seconds(2));
	    std::cout << "Exiting concurrent thread.\n";
	}

	void threadCaller()
	{
	    std::cout << "Starting thread caller.\n";
	    std::jthread t(independentThread);
	    t.detach();
	    std::this_thread::sleep_for(std::chrono::seconds(1));
	    std::cout << "Exiting thread caller.\n";
	}

	int main()
	{
	    threadCaller();
	    std::this_thread::sleep_for(std::chrono::seconds(5));
	}

Possible output:
	Starting thread	caller.
	Starting concurrent thread.
	Exiting	thread caller.
	Exiting	concurrent thread.

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

		     * 32.4.3.2	Members	[thread.jthread.mem]

See also
	  join	   waits for the thread	to finish its execution
		   (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::detach(3)

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

home | help