【发布时间】:2012-12-11 12:56:40
【问题描述】:
我有一个包含两个线程的进程。我想根据他们的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);
}
}
我希望在线程 t1 中调用 set_priority_max() 后,线程 t2 中的 printf() 命令不会被执行。但输出确实包含来自线程 t2 的打印。
为什么会这样?
我该如何解决这个问题?
【问题讨论】:
标签: linux multithreading scheduling thread-priority