我有一个包含两个线程的进程。我想根据他们的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()
线程 t2 中的命令在我调用set_priority_max()
线程 t1 后不会被执行。但输出也包含来自线程 t2 的打印。
为什么会这样?
我怎么解决这个问题?