Реферат: Эффективная многопоточность

status = ZwQuerySystemInformation(NT::SystemTimeOfDayInformation,

&timeinfo, sizeof timeinfo, 0);

if(status!=NO_ERROR)

return -1;

// Получаемвремяпростоя

NT::SYSTEM_PERFORMANCE_INFORMATION perfinfo = {0};

status = ZwQuerySystemInformation(NT::SystemPerformanceInformation,

&perfinfo, sizeof perfinfo, 0);

if(status != NO_ERROR)

return -1;

// если это первый вызов, значение вычислить нельзя

if(liOldIdleTime.QuadPart != 0)

{

// Времяпростоя

dbIdleTime = Li2Double(perfinfo.IdleTime) - Li2Double(liOldIdleTime);

// Системноевремя

const double dbSystemTime = Li2Double(timeinfo.CurrentTime)

- Li2Double(liOldSystemTime);

dbIdleTime = dbIdleTime / dbSystemTime;

dbIdleTime = 100.0 - dbIdleTime * 100.0

/ (double)sysinfo.NumberProcessors + 0.5;

}

// сохраняемполученныезначения

liOldIdleTime = perfinfo.IdleTime;

liOldSystemTime = timeinfo.CurrentTime;

// Если это первый вызов, получаем загруженность CPU за последние

// 200 милисекунд

if(dbIdleTime == 0)

{

К-во Просмотров: 414
Бесплатно скачать Реферат: Эффективная многопоточность