マルチスレッドのプログラミング

thr_setprio(3THR)

thr_setprio(3THR) は、現在のプロセス内の tid で指定したスレッドの優先順位を、newprio で指定した優先順位に変更します。(POSIX スレッドについては、「pthread_setschedparam(3THR)」を参照)。


#include <thread.h>

int thr_setprio(thread_t tid, int newprio)

スレッドのスケジューリングは、デフォルトの設定では、最低の優先順位を表す 0 から最大整数までの範囲の固定的な優先順位に基づいて行われます。tid で指定されたスレッドは、自分より優先順位の低いスレッドから実行リソースを横取りし、自分より優先順位の高いスレッドには実行リソースを譲ります。


thread_t tid;
int ret;
int newprio = 20;

/* 停止状態のスレッドを生成する */
ret = thr_create(NULL, NULL, func, arg, THR_SUSPEND, &tid);

/* 停止状態の子スレッドに対して新しい優先順位を設定する */
ret = thr_setprio(tid, newprio);

/* 停止状態の子スレッドを新しい優先順位で開始する */
ret = thr_continue(tid);