【问题标题】:Set thread's "nice level" from creator thread?从创建者线程设置线程的“好级别”?
【发布时间】:2011-12-06 21:40:00
【问题描述】:

我正在处理我的应用程序中的线程优先级。有一个使用SCHED_RR 调度的实时线程。我使用pthread_setschedparam 设置此策略及其优先级。 pthread_setschedparam 将线程 ID 作为第一个参数,因此在使用 boost::thread 创建线程后,我可以设置其实时优先级。

然而,另一个线程应该有一定的nice-level,但没有实时调度。我可以使用

pid_t tid;
tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, nicelevel);

将其 nice 级别设置为ǹicelevel,但这只有在我修改线程函数以包含上述行时才有效。有没有办法从创建线程的方法中设置 nice 级别?

谢谢!

【问题讨论】:

    标签: c++ linux pthreads scheduling


    【解决方案1】:

    boost::thread 类公开了一个公共 native_handle() 方法。在基于 pthreads 的实现中,此方法可能返回一个tid(它也可能返回一个pthread_t *,具体取决于handle 在此特定的含义案例)。

    如果它确实返回tid,使用它应该可以解决您的问题。否则,您可能不得不将gettid() 返回的值从线程函数传递到全局范围,正如this answer 所建议的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多