std::jthread::native_handle - cppreference.com (original) (raw)
| native_handle_type native_handle(); | | (since C++20) (not always present) | | -------------------------------------- | | ---------------------------------- |
Returns the implementation defined underlying thread handle.
[edit] Parameters
(none)
[edit] Return value
Implementation defined handle type representing the thread.
[edit] Exceptions
May throw implementation-defined exceptions.
[edit] Example
Uses native_handle to enable realtime scheduling of C++ threads on a POSIX system.
#include #include #include #include #include <pthread.h> #include 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(errno) << '\n'; }
Output:
Thread 2 is executing at priority 0 Thread 1 is executing at priority 20