在源码channel中存在多处函数中都包含下边的代码,这块看起来并不是很懂,把这部分单独抽出来讲下。
/*
:params blockprofilerate: 用于指定性能剖析采集频率的阈值
*/
var t0 int64
if blockprofilerate > 0 {
t0 = cputicks()
}
主要用于实现Go语言的性能剖析功能。
它会在程序运行时判断 blockprofilerate 参数是否大于0,如果是的话,则记录程序运行开始时的CPU Tick计数,并将记录保存在 t0 变量中。
在程序执行期间,如果有需要进行性能剖析的代码块,则会在代码块的进入和退出时,使用 cputicks() 函数计算当前 CPU Tick 计数的值,与 t0变量中的记录值相减,得到代码块执行的 CPU时间间隔,进而进行性能剖析。
总的来说,该代码就是用于启用并记录性能剖析信息的