gpt4 book ai didi

multithreading - 系统在程序中的哪些点切换线程

转载 作者:行者123 更新时间:2023-12-03 13:16:00 25 4
gpt4 key购买 nike

我知道线程实际上不能并行运行在同一个核心上 ,但在常规桌面系统中通常有数百甚至数千个线程。这当然比今天的 4 核 CPU 的平均值要高得多。因此,系统实际上运行某个线程 X 时间,然后切换到运行另一个线程 Y 时间,依此类推。

我的问题是,系统如何决定每个线程执行多少时间?

我知道当程序调用 sleep()在一个线程上运行一段时间,操作系统可以利用这段时间来执行其他线程,但是当程序根本不调用 sleep 时会发生什么?

例如:

int main(int argc, char const *argv[])
{
while(true)
printf("busy");

return 0;
}

操作系统何时决定暂停该线程并执行另一个线程?

最佳答案

这取决于您的操作系统正在使用哪种类型的调度,例如让我们采取

循环赛:

为了公平地调度进程,循环调度器通常采用分时,给每个作业一个时隙或量子(它允许的 CPU 时间),如果到那时还没有完成,则中断作业。下次将时间段分配给该进程时,将恢复该作业。如果进程在其属性时间段内终止或将其状态更改为等待,则调度程序选择就绪队列中的第一个进程来执行。

还有其他调度算法,您会发现此链接很有用:https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/5_CPU_Scheduling.html

关于multithreading - 系统在程序中的哪些点切换线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35825044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com