드라이브 G에서 몇 가지 작업을 수행하고 있습니다. 프로그램에서 파일의 데이터를 읽어야합니다. 디스크 사용량이 매우 높으면 (90 % 이상) 프로그램이 읽기 속도를 늦춰 디스크를 사용하는 다른 프로세스를 방해하지 않습니다.
확실히, 추측 하건데, get_data_from_file()
을 호출 한 후 Disk Time
을 확인하면 디스크가 방금 사용 되었기 때문에 카운터가 매우 높은 백분율을 반환하게됩니다. image에서 확인할 수 있습니다.성능 카운터를 사용하여 파일에서 읽기를 제어하는 방법은 무엇입니까?
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);
}
}
}
정확하게 똑같은 해결책으로 끝났습니다. :) 내 게시물을 삭제하기 위해 로그인했지만 이미 답을 보았습니다. :) 그러나 C, CreateThread를 사용하고 C++ 스레드 사용을 좋아하기 때문에 여전히 답을 찾았습니다. – theateist