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

时间:2012-06-19 11:03:08

标签: delphi delphi-xe2 firemonkey

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

2 个答案:

答案 0 :(得分:8)

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

如果您确实选择在应用程序中使用线程,那么有几个库可以简化开发。 How Do I Choose Between the Various Ways to do Threading in Delphi?

答案 1 :(得分:2)

再加上Shannon的答案,在具有多个内核的i7处理器上,一个线程将只使用一个内核。一个线程无法在多个处理器核心上运行。因此,如果您希望使用多个核心,则需要创建多个线程来处理各种任务。创建一个线程并不像在该线程中所说的那样简单,关于多线程需要了解很多。例如,您的应用程序有一个主GUI线程,然后一个线程可能专用于执行一些长计算,另一个线程可能正在更新实时数据的标题,等等。

Windows会自动决定将线程分配给哪个核心,并且通常会公平地将其分配。因此,如果你有8个处理器核心和16个线程,每个核心将获得2个线程(可能),并且由于每个核心彼此分开发送自己的滴答,因此可以同时运行多个线程(相反)单个核心,它在每个线程之间划分每个“#”;

所以要回答你的问题,如果你有5个线程同时执行大事,那么你会看到100%的处理器使用率。