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

FreeBSD Manual Pages

  
 
  

home | help
std::jthrea...ative_handle(3) C++ Standard Libarystd::jthrea...ative_handle(3)

NAME
       std::jthread::native_handle - std::jthread::native_handle

Synopsis
	  [[nodiscard]]	native_handle_type native_handle();  (since C++20)
							     (not	always
       present)

	  Returns the implementation defined underlying	thread handle.

Parameters
	  (none)

Return value
	  implementation defined handle	type representing the thread.

Exceptions
	  May throw implementation-defined exceptions.

Example
	  Uses native_handle to	enable realtime	scheduling of C++ threads on a
       POSIX system

       // Run this code

	#include <thread>
	#include <mutex>
	#include <iostream>
	#include <chrono>
	#include <cstring>
	#include <pthread.h>

	std::mutex iomutex;
	void f(int num)
	{
	    std::this_thread::sleep_for(std::chrono::seconds(1));

	    sched_param	sch;
	    int	policy;
	    pthread_getschedparam(pthread_self(), &policy, &sch);
	    std::lock_guard<std::mutex>	lk(iomutex);
	    std::cout << "Thread " << num << " is executing at priority	"
		      << sch.sched_priority << '\n';
	}

	int main()
	{
	    std::jthread t1(f, 1), t2(f, 2);

	    sched_param	sch;
	    int	policy;
	    pthread_getschedparam(t1.native_handle(), &policy, &sch);
	    sch.sched_priority = 20;
	    if (pthread_setschedparam(t1.native_handle(), SCHED_FIFO, &sch)) {
		std::cout << "Failed to	setschedparam: " <<  std::strerror(er-
       rno) << '\n';
	    }

	}

Output:
	Thread 2 is executing at priority 0
	Thread 1 is executing at priority 20

http://cppreference.com		  2022.07.31	 std::jthrea...ative_handle(3)

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

home | help