在驱动器 G 上进行了几项操作。我的程序应该从文件中读取数据。当磁盘使用率非常高(> 90%)时,程序应该减慢读取速度,以免干扰使用磁盘的其他进程。
显然,我猜,检查Disk Time
after 调用get_data_from_file()
会导致计数器返回非常高的百分比,因为磁盘刚刚被使用。你可以在图片上看到。
关于如何正确检查的任何建议Disk Time
?
PDH_HQUERY query;
PDH_HCOUNTER counter;
PdhOpenQuery(NULL, 0, &query);
PdhAddCounterA(query, "\\LogicalDisk(G:)\\% Disk Time", 0, &counter);
PdhCollectQueryData(query);
auto getDiskTime = [&]()->double
{
PDH_FMT_COUNTERVALUE fmtCounter;
PdhCollectQueryData(query);
PdhGetFormattedCounterValue(counter, PDH_FMT_DOUBLE, 0, &fmtCounter);
return fmtCounter.doubleValue;
};
for(...)
{
get_data_from_file();
print_done_percentage();
double diskUsage = getDiskTime();
if(diskUsage >= 90)
{
std::cout << "The disk usage is over << diskUsage << "%. I'll wait...
while(diskUsage >= 90)
{
diskUsage = getDiskTime();
Sleep(500);
}
}
}