我有一个大型二进制文件(大约 700 Mb),我将其加载到 TMemoryStream。之后,我使用 TMemoryStream.Read() 执行读取并进行一些简单的计算,但应用程序从未占用超过 20% 的 CPU。我的电脑有 i7 处理器。有没有机会在不使用线程的情况下增加 CPU 使用并加快读取过程?
问问题
1348 次
2 回答
8
据我所知,在 Delphi 中利用多个 cpu 内核的强大功能的唯一方法是使用线程。
如果您确实选择在应用程序中使用线程,那么有几个库可以简化开发。如何在 Delphi 中进行线程化的各种方式之间进行选择?
于 2012-06-19T11:46:41.270 回答
2
再加上香农的回答,在具有多核的 i7 处理器上,一个线程将只使用一个核。一个线程不能在多个处理器内核上运行。因此,如果您希望使用多个内核,则需要创建多个线程来处理各种任务。创建一个线程并不一定像在那个线程中那样简单,关于多线程有很多要了解的。例如,您的应用程序有一个主 GUI 线程,然后一个线程可能专门用于执行一些长时间的计算,另一个线程可能正在将标题更新为实时数据,等等。
Windows 会自动决定将线程分配给哪个内核,并且通常会公平地划分它。因此,如果您有 8 个处理器内核和 16 个线程,则每个内核将获得 2 个线程(大概),并且由于每个内核彼此分开发送自己的滴答声,因此实际上可以同时运行多个线程(相反到单个核心,它在每个线程之间划分每个“滴答声”)。
因此,要回答您的问题,如果您有 5 个线程同时执行大型任务,那么您会看到 100% 的处理器使用率。
于 2012-06-20T00:41:02.487 回答