Windows系統CPU記憶體網路效能統計第四篇 CPU 多核CPU各核使用率C++

來源:互聯網
上載者:User

轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8678396

歡迎關注微博:http://weibo.com/MoreWindows

 

Windows系統CPU記憶體網路效能統計第四篇 CPU多核CPU各核使用率 C++

http://blog.csdn.net/morewindows/article/details/8678396

 

    本篇《Windows系統CPU記憶體網路效能統計第四篇 CPU多核CPU各核使用率 C++》(http://blog.csdn.net/morewindows/article/details/8678396)將介紹在VC++中引用C#代碼來完成對多核CPU各核使用率的統計。

Windows系統CPU記憶體網路效能統計部落格目錄:

1.Windows系統CPU記憶體網路效能統計第一篇記憶體

http://blog.csdn.net/morewindows/article/details/8459219

2.Windows系統CPU記憶體網路效能統計第二篇 CPU CPU整體使用率

http://blog.csdn.net/morewindows/article/details/8678359

3.Windows系統CPU記憶體網路效能統計第三篇 CPU 多核CPU各核使用率 C#

http://blog.csdn.net/morewindows/article/details/8678382

4.Windows系統CPU記憶體網路效能統計第四篇 CPU多核CPU各核使用率 C++

http://blog.csdn.net/morewindows/article/details/8678396

 

首先是C#代碼。注意這是一個“C#類庫”的工程,在此工程中完成了一個CShapeCPUUseRate類,這個類的GetCPUEveryCoreUseRate函數將返回一個包含各CPU各核使用率的字串,比如雙核CPU一個核的使用率是3%,另一個的使用率是5%,那麼將返回"3,5"。

//Windows系統CPU記憶體網路效能統計第四篇 CPU多核CPU各核使用率 C++//http://blog.csdn.net/morewindows/article/details/8678396using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace CShapeCPUUseRateDLL{    public class CShapeCPUUseRate    {        public int Initialize()        {            try            {                m_nCPUCoreNumber = System.Environment.ProcessorCount;                m_pfCounters = new PerformanceCounter[m_nCPUCoreNumber];                 for(int i = 0; i < m_nCPUCoreNumber; i++)                        {                                m_pfCounters[i] = new PerformanceCounter("Processor", "% Processor Time", i.ToString());                 }              }            catch (System.Exception e)            {            return 0;            }            return 1;        }        public int GetCPUCoreNumber()        {            return m_nCPUCoreNumber;        }        public string GetCPUEveryCoreUseRate()        {            StringBuilder strBuild = new StringBuilder();            float fRate = m_pfCounters[0].NextValue();            int nRate = Convert.ToInt32(fRate);            strBuild.Append(nRate.ToString());            for(int i = 1; i < m_nCPUCoreNumber; i++)                   {                fRate = m_pfCounters[i].NextValue();                nRate = Convert.ToInt32(fRate);                strBuild.Append("," + nRate.ToString());            }            return strBuild.ToString();        }        private PerformanceCounter[]   m_pfCounters;        private int                    m_nCPUCoreNumber;    }}

如何在C++調用C#代碼可以參考《C++通過DLL調用C#代碼》(http://blog.csdn.net/morewindows/article/details/8678431)。

//Windows系統CPU記憶體網路效能統計第四篇CPU多核CPU各核使用率C++//http://blog.csdn.net/morewindows/article/details/8678396//#using "CShapeCPUUseRateDLL\\CShapeCPUUseRateDLL\\bin\\Debug\\CShapeCPUUseRateDLL.dll"#using "CShapeCPUUseRateDLL\\CShapeCPUUseRateDLL\\bin\\Release\\CShapeCPUUseRateDLL.dll"#include <Windows.h>#include <stdio.h>#include <conio.h>#include <string.h>using namespace CShapeCPUUseRateDLL;int main()  {  printf("    Windows系統CPU記憶體網路效能統計第四篇CPU多核CPU各核使用率C++\n");  printf(" - http://blog.csdn.net/morewindows/article/details/8678396 -\n");printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); CShapeCPUUseRate ^ cpuUseRate = gcnew CShapeCPUUseRate;if (!cpuUseRate->Initialize()){printf("Error!\n");getch();return -1;}else{printf("系統中CPU為%d核CPU\n",cpuUseRate->GetCPUCoreNumber());while (true){Sleep(1000);printf("\r當前CPU各核使用率分別為:%s     ", cpuUseRate->GetCPUEveryCoreUseRate());}}return 0;}

程式運行結果如下:

 

這種通過C++調用C#代碼來擷取CPU各核使用率的方法不是太好,以後再找找資料看看在C++中如何直接擷取CPU各核使用率,歡迎高手指點。

轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/8678396

歡迎關注微博:http://weibo.com/MoreWindows

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.