-1

我注意到 VLC 媒体播放器在执行从 MP4 到 MP3 的文件转换时有时会占用高达 98% 的 CPU。我的理解是操作系统试图平衡每个进程的时间,所以这引起了我的注意。我有一种感觉,像磁盘碎片整理程序和防病毒这样的程序也可能需要如此大的处理器周期。它是如何在代码(C,C++)中实现的?

4

1 回答 1

1

这取决于操作系统,但操作系统试图平衡每个进程获得的时间通常不是主要目标。

相反,智能调度程序将利用可用的 CPU,同时仍响应更高优先级的事情,如用户输入和硬件事件。如果没有更多工作要做(例如阻塞事件),一个表现良好的线程也将在其 cpu 配额之前撤回其时间片,否则在截止日期时调度程序可能会接管 cpu(抢占)并给其他线程执行的机会.

您可以将线程优先级设置为调度程序的提示,这可能会影响接管条件,但这完全取决于调度程序和操作系统内部。

简单地说,你不需要做特殊的事情来利用一个cpu核心,如果你有密集的计算,操作系统会给你最多的。

于 2015-07-24T07:40:56.917 回答