最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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語言鏈表實現(xiàn)貪吃蛇小游戲

    C語言鏈表實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C語言鏈表貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++中BitSet和Bloom_Filter的實現(xiàn)

    C++中BitSet和Bloom_Filter的實現(xiàn)

    本文主要介紹了C++中BitSet和Bloom_Filter的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • C語言中進程間通訊的方式詳解

    C語言中進程間通訊的方式詳解

    這篇文章主要為大家詳細介紹了C語言中幾種進程間通訊的方式,文中的示例代碼講解詳細,?對我們學(xué)習(xí)或工作有一定的借鑒價值,需要的可以參考一下
    2022-08-08
  • C++缺省參數(shù)與重載函數(shù)(超詳細!)

    C++缺省參數(shù)與重載函數(shù)(超詳細!)

    無論使用什么語言函數(shù)都是代碼段中必不可少的部分,因此我們有必要深入認(rèn)識一下C++中函數(shù)的兩種特殊用法,缺省參數(shù),函數(shù)重載,這篇文章主要給大家介紹了關(guān)于C++缺省參數(shù)與重載函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • 詳析C++中的auto

    詳析C++中的auto

    這篇文章主要介紹了詳析C++中的auto,auto是具有自動存儲器的局部變量,C++11中,標(biāo)準(zhǔn)委員會賦予了auto全新的含義即:auto不再是一個存儲類型指示符,而作為一個新的類型指示符來指示編譯器,下面來看看文章的詳細介紹吧
    2022-01-01
  • C++實現(xiàn)LeetCode(77.Combinations 組合項)

    C++實現(xiàn)LeetCode(77.Combinations 組合項)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(Combinations 組合項),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++ Explicit關(guān)鍵字詳細解析

    C++ Explicit關(guān)鍵字詳細解析

    以下是對C++中Explicit關(guān)鍵字的用法進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-09-09
  • Vscode自定義注釋模板的實現(xiàn)示例

    Vscode自定義注釋模板的實現(xiàn)示例

    本文主要介紹了Vscode自定義注釋模板的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • swift Character類型詳解及實例

    swift Character類型詳解及實例

    這篇文章主要介紹了 swift Character類型詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 更優(yōu)雅的C++字符串格式化實現(xiàn)方法詳解

    更優(yōu)雅的C++字符串格式化實現(xiàn)方法詳解

    在用C++編寫代碼時,經(jīng)常需要用到字符串拼接及格式化,尤其是在拼寫sql語句時。所以本文為大家介紹了更優(yōu)雅的C++字符串格式化實現(xiàn)方法,希望對大家有所幫助
    2023-04-04

最新評論

南部县| 墨竹工卡县| 白水县| 乌鲁木齐县| 天镇县| 枝江市| 秦安县| 全椒县| 黔南| 穆棱市| 金阳县| 华阴市| 凤凰县| 镇安县| 农安县| 建瓯市| 广饶县| 吉木乃县| 东乌珠穆沁旗| 旌德县| 旬阳县| 扶余县| 浦北县| 静海县| 沙坪坝区| 桐庐县| 德州市| 中方县| 宜宾市| 香河县| 龙井市| 温泉县| 湖北省| 惠安县| 德州市| 南川市| 揭阳市| 永善县| 自治县| 乐昌市| 武平县|