GOMAXPROCS的使用
使用
2023-06-13 09:16:17 时间
- GOMAXPROCS的作用是控制你的程序最大能跑满几个逻辑CPU,也就是通常我们说的几核几核
- 默认情况下GOMAXPROCS的值就是NumCPU()的值
- 程序中设置了GOMAXPROCS的值后,此后的所有程序都会被限制在这个值内,所以,要想单独控制某段程序的负载,请设置完后,再设置回来。如下测试案例,SleepWait控制最多使用一半的cpu,我的虚拟机是6核,所以cpu轻松跑到300%,10秒过后,如果我不把Test_GOMAXPROCS注释的那段放开,主程序也会最大负载300%
- 当程序已经有协程阻塞时,
runtime.GOMAXPROCS(runtime.NumCPU())
会被阻塞,直到所有协程都无阻塞。
func Test_GOMAXPROCS(t *testing.T) {
SleepWait(10 * time.Second)
fmt.Println("???")
// result := runtime.GOMAXPROCS(runtime.NumCPU())
// fmt.Println("result", result)
for i := 0; i < 8; i++ {
go func() {
for {
}
}()
}
select {}
}
func SleepWait(duration time.Duration) {
fmt.Println("?")
result := runtime.GOMAXPROCS(runtime.NumCPU() / 2)
fmt.Println("result", result)
done := make(chan bool)
for i := 0; i < 8; i++ {
go func() {
defer fmt.Println("!!")
for {
select {
case <-done:
return
default:
}
}
}()
}
fmt.Println("duration:", duration)
<-time.After(duration)
close(done)
fmt.Println("??")
}
相关文章
- 斗鱼主播都在使用的可取回的CSGO开箱子网站推荐!「建议收藏」
- 【Rust日报】2023-01-02 学习使用Rust编写嵌入式操作系统
- 【错误记录】Git 使用报错 ( git branch -a 仍能查询到已经删除的远程分支 )
- SSL证书在国外服务器安全中的作用及使用方法
- Spring Cloud Bus 的作用和使用场景
- Oracle 视图 ALL_ANALYTIC_VIEW_FCT_COLS_AE 官方解释,作用,如何使用详细说明
- 使用情况Linux查看系统端口使用情况:完全掌控(linux查看系统端口)
- 从头开始:使用Linux双系统启动菜单(linux双系统启动菜单)
- 『在Linux系统中使用FTP客户端』(linux下ftp客户端)
- Oracle日期格式的使用说明(oracle英文日期)
- 使用Maven构建Oracle应用的最佳实践(mvn oracle)
- Oracle ASMM优化内存使用(oracle asmm)