最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

c++ 设置线程调度策略以及优先级

维修 admin 155浏览 0评论

c++ 设置线程调度策略以及优先级

c++ 线程调度及优先级

  • 在 linux 平台上,c++ 线程可以看作是对 pthread 的封装,调用 native_handle 方法可返回底层线程柄,即 pthead_t 描述符,然后,可以使用 pthread 相关api进行相关设置。

示例1

  • 使用 native_handle 方法。可能会出现 Operation not permitted 错误,使用管理员权限执行即可。

    #include <pthread.h>
    #include <cstdio>
    #include <cstring>
    #include <thread>
    #include <chrono>using namespace std::chrono_literals;void f(void)
    {std::this_thread::sleep_for(1s);int policy;sched_param sch;pthread_getschedparam(pthread_self(), &policy, &sch);printf("sched policy %d, thread priority %d\n", policy, sch.sched_priority);
    }int main()
    {std::thread t(f);sched_param sch;sch.sched_priority = 20;if (pthread_setschedparam(t.native_handle(), SCHED_FIFO, &sch)) {printf("set sched param failed - %s\n", strerror(errno));}t.join();return 0;
    }
    

c++ 设置线程调度策略以及优先级

c++ 线程调度及优先级

  • 在 linux 平台上,c++ 线程可以看作是对 pthread 的封装,调用 native_handle 方法可返回底层线程柄,即 pthead_t 描述符,然后,可以使用 pthread 相关api进行相关设置。

示例1

  • 使用 native_handle 方法。可能会出现 Operation not permitted 错误,使用管理员权限执行即可。

    #include <pthread.h>
    #include <cstdio>
    #include <cstring>
    #include <thread>
    #include <chrono>using namespace std::chrono_literals;void f(void)
    {std::this_thread::sleep_for(1s);int policy;sched_param sch;pthread_getschedparam(pthread_self(), &policy, &sch);printf("sched policy %d, thread priority %d\n", policy, sch.sched_priority);
    }int main()
    {std::thread t(f);sched_param sch;sch.sched_priority = 20;if (pthread_setschedparam(t.native_handle(), SCHED_FIFO, &sch)) {printf("set sched param failed - %s\n", strerror(errno));}t.join();return 0;
    }
    
发布评论

评论列表 (0)

  1. 暂无评论