【发布时间】:2018-09-07 02:00:33
【问题描述】:
我为两个线程编写了代码,其中一个线程的优先级为 20(较低),另一个线程的优先级为 10(较高)。在执行我的代码时,70% 的时间我得到了预期的结果,即 high_prio(优先级为 10)线程首先执行,然后是 low_prio(优先级为 20)。
为什么我的代码无法在所有执行中获得 100% 正确的结果?我在做任何概念上的错误吗?
void *low_prio(){
Something here;
}
void *high_prio(){
Something here;
}
int main(){
Thread with priority 10 calls high_prio;
Thread with priority 20 calls low_prio;
return 0;
}
【问题讨论】:
-
主线程的优先级是多少?
-
你的意思是 main () ?我只有两个线程。它们不是任何其他线程的子线程。
-
当要完成的工作超小,你先启动低优先级的线程,它完全有可能在第二个线程启动之前完成它的工作。
-
@immibis:虽然我对此不太确定,但主线程的默认调度是非
FIFO可能意味着它应该立即被低优先级FIFO线程抢占(虽然显然这没有发生,因为 OP 的结果不一致)。 -
您的第一条评论更有意义。我将运行一个循环并测试它。
标签: c multithreading thread-priority