2 つのスレッドを含むプロセスがあります。に基づいてスケジュールを設定したいpriority(SCHED_RR policy)
。t1、t2 がこれらのスレッドを表し、どちらも最初は優先度 1 (最低) を持っているとします。
重要なタスクの実行中にスレッド t1 がプリエンプト/再スケジュールされないようにしたいので、重要なタスクの前にその優先度を最大に上げ、重要なタスクの後に元の値に減らします。
thread_proc_t1() {
while(1) {
if(critical condition happens) {
set_priority_max();
}
printf("t1");
usleep(xxx);
if(critical task finished ) {
reset_priority();
}
}
}
thread_proc_t2() {
while(1) {
printf("t2");
usleep(xxx);
}
}
printf()
スレッド t1 で呼び出した後、スレッド t2 のコマンドが実行されないことを期待していますset_priority_max()
。ただし、出力にはスレッド t2 からのプリントも含まれます。
これはなぜですか?
どうすればこの問題を解決できますか?