我正在处理我的应用程序中的线程优先级。使用SCHED_RR
安排了一个实时线程。我使用pthread_setschedparam
来设置此策略及其优先级。 pthread_setschedparam
将线程id作为第一个参数,因此在使用boost::thread
创建线程后,我可以设置其实时优先级。
但是,另一个线程应该有一个很好的级别,但没有实时调度。我可以用
pid_t tid;
tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, nicelevel);
将其良好级别设置为ǹicelevel
,但这仅在我修改线程函数以包含上面的行时才有效。有没有办法从创建线程的方法中设置好的级别?
谢谢!
答案 0 :(得分:0)
boost::thread类公开了一种公共native_handle()
方法。在基于pthreads的实现中,此方法可能返回tid
(它也可能返回pthread_t *
,具体取决于{{1}的含义1}}在这种特殊情况下)。
如果它确实返回handle
,使用它应该可以解决您的问题。否则,您可能必须将tid
返回的值从线程函数中继到全局范围,如this answer所示。