objective-c – 获取CPU百分比使用率

objective-c – 获取CPU百分比使用率,第1张

概述我是Objective-C的初学者,我决定尝试写一些简单的应用程序,所以我想做一个应用程序,将测量CPU使用率等。有一个简单的方法来获取信息,如在Cocoa应用程序中使用Objective-C的CPU百分比使用率? 我发现这个问题Determine Process Info Programmatically in Darwin/OSX是相似的,但不完全一样。主要是,我想要整个系统的CPU百分比使用 我是Objective-C的初学者,我决定尝试写一些简单的应用程序,所以我想做一个应用程序,将测量cpu使用率等。有一个简单的方法来获取信息,如在Cocoa应用程序中使用Objective-C的cpu百分比使用率?

我发现这个问题Determine Process Info Programmatically in Darwin/OSX是相似的,但不完全一样。主要是,我想要整个系统的cpu百分比使用,而不只是我的过程,我实际喜欢一个Objective-C解决方案,而在那个问题海报想要别的东西。

解决方法 这是我做的方式:

* .h文件:

#include <sys/sysctl.h>#include <sys/types.h>#include <mach/mach.h>#include <mach/processor_info.h>#include <mach/mach_host.h>

ivars:

processor_info_array_t cpuInfo,prevcpuInfo;mach_msg_type_number_t numcpuInfo,numPrevcpuInfo;unsigned numcpus;NSTimer *updateTimer;NSLock *cpuUsageLock;

* .m文件

- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification{        int mib[2U] = { CTL_HW,HW_Ncpu };    size_t sizeOfNumcpus = sizeof(numcpus);    int status = sysctl(mib,2U,&numcpus,&sizeOfNumcpus,NulL,0U);    if(status)        numcpus = 1;    cpuUsageLock = [[NSLock alloc] init];    updateTimer = [[NSTimer scheduledTimerWithTimeInterval:3                                                    target:self                                                  selector:@selector(updateInfo:)                                                  userInfo:nil                                                   repeats:YES] retain];    }- (voID)updateInfo:(NSTimer *)timer{    natural_t numcpusU = 0U;    kern_return_t err = host_processor_info(mach_host_self(),PROCESSOR_cpu_LOAD_INFO,&numcpusU,&cpuInfo,&numcpuInfo);    if(err == KERN_SUCCESS) {        [cpuUsageLock lock];        for(unsigned i = 0U; i < numcpus; ++i) {            float inUse,total;            if(prevcpuInfo) {                inUse = (                         (cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_USER]   - prevcpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_USER])                         + (cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_SYstem] - prevcpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_SYstem])                         + (cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_NICE]   - prevcpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_NICE])                         );                total = inUse + (cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_IDLE] - prevcpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_IDLE]);            } else {                inUse = cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_USER] + cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_SYstem] + cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_NICE];                total = inUse + cpuInfo[(cpu_STATE_MAX * i) + cpu_STATE_IDLE];            }            NSLog(@"Core: %u Usage: %f",i,inUse / total);        }        [cpuUsageLock unlock];        if(prevcpuInfo) {            size_t prevcpuInfoSize = sizeof(integer_t) * numPrevcpuInfo;            vm_deallocate(mach_task_self(),(vm_address_t)prevcpuInfo,prevcpuInfoSize);        }        prevcpuInfo = cpuInfo;        numPrevcpuInfo = numcpuInfo;        cpuInfo = NulL;        numcpuInfo = 0U;    } else {        NSLog(@"Error!");        [NSApp terminate:nil];    }}
总结

以上是内存溢出为你收集整理的objective-c – 获取CPU百分比使用率全部内容,希望文章能够帮你解决objective-c – 获取CPU百分比使用率所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1042677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存