亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C/C++獲取Windows平臺CPU占用率的方法

 更新時間:2023年12月31日 09:09:13   作者:CBDDL差不多得了  
最近在做系統(tǒng)信息相關(guān)的接口,為了實現(xiàn)跨平臺,故在linux和Windows平臺獲取占用率信息,文章主要介紹Windows下的方法,文中給出了參考代碼,需要的朋友可以參考下

一、主要接口

PdhOpenQueryA函數(shù)

此函數(shù)主要作用是:創(chuàng)建從實時源或日志文件收集性能數(shù)據(jù)的新查詢,返回在后續(xù) PDH 函數(shù)調(diào)用中使用的查詢的句柄。

PdhAddCounterA函數(shù)

此函數(shù)主要功能為:將指定的計數(shù)器添加到查詢。

PdhCollectQueryData函數(shù)

此函數(shù)主要功能為:收集指定查詢中所有計數(shù)器的當(dāng)前原始數(shù)據(jù)值,并更新每個計數(shù)器的狀態(tài)代碼。 有的數(shù)據(jù)需要兩個樣本數(shù)據(jù),所以一般步驟為:

  • 調(diào)用 PdhCollectQueryData 以收集第一個樣本。
  • 調(diào)用 Sleep 函數(shù)以在集合之間至少等待一秒。
  • 再次調(diào)用 PdhCollectQueryData 以收集第二個樣本。
  • 調(diào)用 PdhGetFormattedCounterValue 函數(shù)以計算可顯示的值。
  • 重復(fù)步驟 2 到 4。

PdhGetFormattedCounterValue函數(shù)

此函數(shù)主要功能為:計算指定計數(shù)器的可顯示值。 

大體的邏輯是:創(chuàng)建句柄->添加計數(shù)器->收集數(shù)據(jù)->顯示數(shù)據(jù) 

以下是參考代碼:

#include <pdh.h>
#pragma comment(lib, "Pdh.lib")
 
PDH_STATUS status;
PDH_HQUERY query;
PDH_HCOUNTER counter;
 
status = PdhOpenQueryA(NULL, 0, &query);
if (status != ERROR_SUCCESS) {
    return;
}
        
status = PdhAddCounterA(query, "\\Processor(_Total)\\% Idle Time", 0, &counter);
if (status != ERROR_SUCCESS) {
    PdhCloseQuery(query);
    return;
}
 
const int NUM = 10;
PdhCollectQueryData(query);
PDH_RAW_COUNTER rawValueArray[NUM]; // 假設(shè)有00個取樣值
for (int i = 0; i < NUM; i++)
{
    Sleep(1000);    //阻塞1s
    PdhCollectQueryData(query);
 
    PDH_FMT_COUNTERVALUE value;
    PdhGetRawCounterValue(counter, 0, &rawValueArray[i]);
    status = PdhGetFormattedCounterValue(counter, PDH_FMT_DOUBLE, NULL, &value);
    if (status == ERROR_SUCCESS) {
        printf("getCpuPercenage: %.2f%\n", value.doubleValue);
    }
    else {
        std::cout << "Error:" << status;
    }
}
        
DWORD dwFirstEntry = 0; // 從第一個取樣值開始
DWORD dwNumEntries = NUM; // 一共10個取樣值
PDH_STATISTICS stat;
// 計算統(tǒng)計信息
status = PdhComputeCounterStatistics(counter, PDH_FMT_DOUBLE, dwFirstEntry, dwNumEntries, rawValueArray, &stat);
 
if (status == ERROR_SUCCESS) {
    printf("Average: %f\n", stat.mean.doubleValue);
    printf("Minimum: %f\n", stat.min.doubleValue);
    printf("Maximum: %f\n", stat.max.doubleValue);
}
else {
    printf("Failed to compute counter statistics: %d\n", status);
}
        
PdhCloseQuery(query);

附上參考鏈接:使用 PDH 函數(shù)使用計數(shù)器數(shù)據(jù) - Win32 apps | Microsoft Learn

Ps:以上代碼使用的是% Idle Time (處理器在采樣期間空閑的時間的百分比),因為我感覺這個比% Processor Time (處理器用來執(zhí)行非閑置線程時間的百分比)更準(zhǔn)確,可以自行用100減掉。

以上就是C/C++獲取Windows平臺CPU占用率的方法的詳細內(nèi)容,更多關(guān)于C/C++獲取Windows CPU占用率的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++ OpenCV實戰(zhàn)之制作九宮格圖像

    C++ OpenCV實戰(zhàn)之制作九宮格圖像

    本文將為大家介紹如何使用OpenCV C++ 制作九宮格圖像,即將一張圖像均等分成九份,然后將這九個小塊按一定間隔拷貝到新畫布上就可以啦。感興趣的可以動手試一試
    2022-01-01
  • 一文詳解C++ 智能指針的原理、分類及使用

    一文詳解C++ 智能指針的原理、分類及使用

    智能指針的本質(zhì)就是使用一個對象來接管一段開辟的空間,這篇文章就來給大家介紹介紹C++智能指針的原理,分類及使用方法,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-05-05
  • C++利用opencv實現(xiàn)單目測距的實現(xiàn)示例

    C++利用opencv實現(xiàn)單目測距的實現(xiàn)示例

    本文主要介紹了C++利用opencv實現(xiàn)單目測距的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 基于C++17實現(xiàn)的手寫線程池

    基于C++17實現(xiàn)的手寫線程池

    本文主要介紹了基于C++17實現(xiàn)的手寫線程池,自己實現(xiàn)了Any類,Semaphore類以及Result類的開發(fā),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • 黑客帝國數(shù)字雨效果VC6源代碼分享

    黑客帝國數(shù)字雨效果VC6源代碼分享

    這篇文章主要介紹了黑客帝國數(shù)字雨效果VC6源代碼分享,本文直接給出實現(xiàn)代碼,Win7下編譯通過,效果很酷,需要的朋友可以參考下
    2015-02-02
  • C++的get()函數(shù)與getline()函數(shù)使用詳解

    C++的get()函數(shù)與getline()函數(shù)使用詳解

    這篇文章主要介紹了C++的get()函數(shù)與getline()函數(shù)使用詳解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • Opencv實現(xiàn)視頻播放與進度控制

    Opencv實現(xiàn)視頻播放與進度控制

    這篇文章主要為大家詳細介紹了Opencv實現(xiàn)視頻播放與進度控制,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 關(guān)于虛函數(shù)實現(xiàn)多態(tài)的原理及分析

    關(guān)于虛函數(shù)實現(xiàn)多態(tài)的原理及分析

    這篇文章主要介紹了C++中如何實現(xiàn)多態(tài)問題,具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C語言中volatile關(guān)鍵字的深入講解

    C語言中volatile關(guān)鍵字的深入講解

    在程序設(shè)計中,尤其是在C語言、C++、C#和Java語言中,使用volatile關(guān)鍵字聲明的變量或?qū)ο笸ǔ>哂信c優(yōu)化、多線程相關(guān)的特殊屬性,這篇文章主要給大家介紹了關(guān)于C語言volatile關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹)

    C++實現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論