从创建者线程设置线程的“好的级别”?

时间:2011-10-13 11:42:54

标签: c++ linux pthreads scheduling

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

但是,另一个线程应该有一个很好的级别,但没有实时调度。我可以用

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

boost::thread类公开了一种公共native_handle()方法。在基于pthreads的实现中,此方法可能返回tid(它也可能返回pthread_t *,具体取决于{{1}的含义1}}在这种特殊情况下)。

如果它确实返回handle,使用它应该可以解决您的问题。否则,您可能必须将tid返回的值从线程函数中继到全局范围,如this answer所示。