我们在delphi 2010中开发了一个服务器应用程序。
在这种情况下,服务器运行多个线程,这些线程访问相同的文件(大小为aprox 2.5GB),用于在作业#1(一个大而长的计算工作)上读取顺序访问中的数据。
该文件存储在240GB SSD驱动器上的win2012机器上。 当这个作业(#1)正在运行时,对同一个文件执行NO WRITE作业。
当前的问题是当作业#1正在运行时,同一服务器(exe)就是这样 在不同的作业上运行不同的线程,CAN通过不同的线程(作业)访问/读取不同的文件,在同一个驱动器上的不同目录上...也 与此同时,我们可以看到CPU处于低电平 - 大约16%。
更多信息: 我们使用命令
CreateFileW(FileName, GENERIC_READ, FILE_SHARE_READ OR FILE_SHARE_WRITE, NIL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_RANDOM_ACCESS, 0);
其他硬件信息:
答案 0 :(得分:0)
我假设服务器是在单个进程上执行的,而这个进程正在创建创建多个线程的所有作业。因此,所有线程都被计为同一进程的线程。
线程具有内存占用,并且允许在同一进程中创建的线程数取决于此占用空间,因为该进程还限制了它可以使用的可用内存。 线程的内存占用量越大,可以在同一进程中创建的线程数越少。
如果您还没有这样做,作为调查的第一步,请查看: