为什么Firemonkey应用程序使用的CPU不超过20%



我有一个大的二进制文件(大约700 Mb),我加载到TMemoryStream。之后,我使用 TMemoryStream.Read() 执行读取并进行一些简单的计算,但应用程序占用的 CPU 永远不会超过 20%。我的电脑有 i7 处理器。是否有机会在不使用线程的情况下增加 CPU 使用率并加快读取过程?

据我所知,利用Delphi多个CPU内核的强大功能的唯一方法是使用线程。

如果您选择在应用程序中使用线程,则有几个库可以简化开发。如何在德尔福进行线程的各种方法之间进行选择?

再加上香农的回答,在具有多个内核的 i7 处理器上,一个线程将只使用一个内核。一个线程不能在多个处理器内核上运行。因此,如果您希望利用多个内核,则需要创建多个线程来处理各种任务。创建线程并不一定像在该线程中执行此操作那么简单,关于多线程有很多知识。例如,您的应用程序有一个主 GUI 线程,然后一个线程可能专用于执行一些长计算,另一个线程可能将标题更新为实时数据,依此类推。

Windows会自动决定将线程分配给哪个核心,并且通常会公平地划分它。因此,如果您有 8 个处理器内核和 16 个线程,则每个内核将获得 2 个线程(大概),并且由于每个内核彼此分开发送自己的时钟周期,因此多个线程实际上可以同时运行(而不是单个内核,它将每个"tick"划分在每个线程之间)。

因此,要回答您的问题,如果您有 5 个线程同时执行大操作,那么您会看到 100% 的处理器使用率。

最新更新