问题描述:
最近需要实现一个控制cpu使用率的功能,就是《编程之美》里面画CPU曲线那个例子。
但是,找了半天好像没有golang实现的例子。
然后呢,就自己随手丢了个死循环,想看看100%的效果,结果扑了个空,只能压到16%~17%左右。
好像是有点效果,但是差太远了。
(环境:8核 3.0GHZ win7 云主机)
runtime.GOMAXPROCS(1) for { // time.Sleep(800 * time.Millisecond) }
对比,C语言代码
#include "stdafx.h" #include "stdio.h" int _tmain(int argc, _TCHAR* argv[]) { int i; while(true) { for(i=0;i<840000;++i)//840000是根据cpu 频率算出来的,每个周期假设能出来2条汇编指令 ; Sleep(10); } return 0; }
是云主机在CPU使用方面有特殊处理呢?还是go语言的什么特性导致的?
求大神解答一下
第 1 个答案:
因为go自己实现的用户态线程调度,死循环之类的并不会一直运行,会根据调度算法让出时间片,所以即使是死循环也不会像c那样cpu 100%
1.项目中需要使用prometheus监控每个请求的耗时情况和响应结果(http.StatusCode)2.看了prometheus的文档,依旧不是很明白3.下面是一段示例demo,我应该使用 ...