首页 > 其他 > 详细

CPU消耗程序

时间:2019-06-27 16:04:58      阅读:94      评论:0      收藏:0      [点我收藏+]
参考链接https://www.cnblogs.com/lichmama/p/3879982.html
多进程,CPU消耗程序

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
/**
*@Usage: ./$0 [SUBPROCESS NUMBER]
*/
int main(int argc, char *argv[]){
pid_t pid;
int i, pn=4;
if(argc==2){
pn=atoi(argv[1]);
}
for(i=0;i<pn;i++){
pid=fork();
if(pid<=0)break;
}
if(pid<0){
printf("fork() error\n");
return -1;
}else if(pid==0){
//sub process works
for(;;);
}else{
//wait for the sub process‘s termination
wait(NULL);
}
return 0;
}


多线程,需要绑核;否则多线程只运行在一个CPU上,只是某个CPU利用率达到100%
#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <sched.h> void *thread(void *arg){ cpu_set_t cst; int cpu=*((int *)arg); CPU_ZERO(&cst); CPU_SET(cpu, &cst); if(pthread_setaffinity_np(pthread_self(), sizeof(cst), &cst)!=0){ printf("set thread affinity failed.\n"); pthread_exit(NULL); } for(;;); } //gcc -Wall -lpthread thread.c -o thread.o int main(void){ int i; pthread_t tid[256]; int cpus[256]; for(i=0;i<sysconf(_SC_NPROCESSORS_CONF);i++){      //线程参数不能用公用变量传递,要确保每个参数值的地址都是被独立使用的 cpus[i]=i; if(pthread_create(&tid[i], NULL, thread, (void *)(&cpus[i]))!=0){ printf("create thread failed.\n"); return -1; } } for(i=0;i<sysconf(_SC_NPROCESSORS_CONF);i++){ pthread_join(tid[i], NULL); } return 0; }

CPU消耗程序

原文:https://www.cnblogs.com/lichenyangyixin/p/11097311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!