Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 为什么运行时互斥体/块评测不同于CPU/跟踪评测_Go - Fatal编程技术网

Go 为什么运行时互斥体/块评测不同于CPU/跟踪评测

Go 为什么运行时互斥体/块评测不同于CPU/跟踪评测,go,Go,Golang runtime profiler(用于cpu和跟踪)为我们提供了一个选项来决定分析的时间。然后在调用开始时设置评测的速率,并在调用结束时重置速率。事情是这样的 CPUProfiling() { StartCPUProfile() // internally calls SetCPUProfileRate(100) sleep(seconds) StopCPUProfile () // internally calls SetCPUProfileRate(0) }

Golang runtime profiler(用于cpu和跟踪)为我们提供了一个选项来决定分析的时间。然后在调用开始时设置评测的速率,并在调用结束时重置速率。事情是这样的

CPUProfiling() {
   StartCPUProfile() // internally calls SetCPUProfileRate(100)
   sleep(seconds)
   StopCPUProfile () // internally calls SetCPUProfileRate(0)
}
另一方面,对于互斥和块分析,它希望我们在应用程序启动时设置速率,在调用分析时,它只收集信息并返回


我的疑问是为什么互斥和块分析有不同的行为?在这里,我们还可以在通话开始时设置速率,在通话结束时设置重置速率,并留出一些睡眠时间

关于Go为什么以这种方式工作的问题应该针对维护人员。虽然提到“CPU配置文件…有一个特殊的API,StartCPUProfile和stopcpurpfile函数,因为它在配置文件期间将输出流式传输给写入程序。”但表面上的答案是“因为实现不同”。至于为什么它们不同,在Go邮件列表中问这个问题可能比问这个问题更好。你也可以根据需要调用
SetBlockProfileRate
,就像
setCPupFileRate
一样。仅仅因为在处理程序中为您设置了最常见的默认用法,并不意味着您不能编写自己的。