Spec-Zone.ru › C++

std::thread::native_handle

native_handle_type native_handle();
(начиная с C++11)
(присутствует не всегда)

Возвращает зависящий от реализации дескриптор базового потока.

Параметры

(нет)

Возвращаемое значение

Зависящий от реализации тип дескриптора, представляющий поток.

Исключения

Может выбрасывать исключения, зависящие от реализации.

Пример

Использует native_handle для включения планирования реального времени для потоков C++ в системе POSIX.

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

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::thread 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';

    t1.join(); t2.join();
}

Вывод:

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/thread/thread/native_handle

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API