[quote=引用 11 楼 JASKLE 的回复:] 事实上一个死循环最多占满一个CPU核心。 Sleep是主动让出使用权 最优的方案是事件的内核等待,通过释放事件来激活线程
事实上一个死循环最多占满一个CPU核心。 Sleep是主动让出使用权 最优的方案是事件的内核等待,通过释放事件来激活线程
搜“毛德操 windows线程调度”
[quote=引用 2 楼 jiqiang01234 的回复:] 操作系统会根据线程优先级来调度线程执行。如果一个线程执行死循环,别的线程也会得到执行的机会,只是时间片分配的没那么多,也就是别的线程只能执行很少的代码。 人为调用sleep是想主动让出本线程的执行时间,可以调度给别的线程执行
操作系统会根据线程优先级来调度线程执行。如果一个线程执行死循环,别的线程也会得到执行的机会,只是时间片分配的没那么多,也就是别的线程只能执行很少的代码。 人为调用sleep是想主动让出本线程的执行时间,可以调度给别的线程执行
《操作系统》书上讲系统本来就具备自动调度线程的功能, 为什么在项目程序中的线程函数中看到还是要自己调用sleep函数?如果不调用sleep函数别的线程就得不到执行吗?比如一个线程函数中写了一个无线循环,中间不调用sleep的话就会一直占用CPU这是为什么?系统不会把这条线程调度走让别的线程执行吗?
15,473
社区成员
49,171
社区内容
加载中
试试用AI创作助手写篇文章吧