2017-05-08 14 views
0

Linux上でpthread_attr_setschedpolicy経由でSCHED_FIFOを使用するアプリケーションを実行しています。pthreadの優先順位は、linuxではlwpの優先順位とどのように関係していますか?

スレッドの開始前にpthread_attr_setschedparam()がスレッドの属性をスレッドの優先度に設定できるようにして、少なくとも32レベルがサポートされている必要があります。

ランニング実際ながら:スレッドの優先順位を使用してpthread_createの前に設定されている

sched_get_priority_max(SCHED_FIFO) = 99 
sched_get_priority_min(SCHED_FIFO) = 1 

pthread_attr_setinheritsched(&thread_attr,PTHREAD_EXPLICIT_SCHED)) 
pthread_attr_setschedparam(&thread_attr) 

私はそれを調べる場合は、

pthread_attr_t thread_attr; 
struct sched_param s_param; 
int res = pthread_getattr_np(channel_data_p->thread, &thread_attr); 
assert(res == 0); 
res = pthread_attr_getschedparam (&thread_attr, &s_param); 
assert(res == 0); 
log_write("thread %d, priority = %d",threadId,s_param.sched_priority); 

は私が期待される優先順位を参照してください。 しかし、私はps -o、top -H、/ procを使ってpthreadsの優先順位を表示する方法を明確にしていません またはPRやNIのようなLinuxの値をどのように関連付けるか(トップフィールドの下では、 H)をposixの優先順位に戻します。

私は優先順位を動的に混乱させるつもりはありませんので、これは学問的に興味があります。

+0

私がこの質問をしたとき、使用していたコードに「pthread_attr_setinheritsched(&thread_attr、PTHREAD_EXPLICIT_SCHED)」という忘れてしまったバグがありました。 –

答えて

関連する問題