发布时间:2024-11-05 19:25:54
下面是一个例子,展示了如何设置GOMAXPROCS变量:
```go package main import ( "fmt" "runtime" ) func main() { numCores := runtime.NumCPU() fmt.Println("当前CPU核心数:", numCores) // 设置GOMAXPROCS的值为2,限制使用两个CPU核心 runtime.GOMAXPROCS(2) // 运行其他代码... } ``` 在上述例子中,我们首先使用`runtime.NumCPU()`函数获取当前系统的CPU核心数,并打印出来。然后,我们使用`runtime.GOMAXPROCS()`函数将GOMAXPROCS的值设置为2,从而限制Golang程序只使用两个CPU核心。下面是一个例子,展示了如何使用CPU亲和性:
```go package main import ( "fmt" "runtime" "syscall" ) func main() { numCores := runtime.NumCPU() fmt.Println("当前CPU核心数:", numCores) runtime.GOMAXPROCS(numCores) // 设置GOMAXPROCS的值等于系统CPU核心数,充分利用所有CPU核心 // 将程序绑定到第一个CPU核心 err := syscall.SetAffinity(0, []int{0}) if err != nil { fmt.Println("设置CPU亲和性失败:", err) return } // 运行其他代码... } ``` 在上述例子中,我们首先使用`runtime.NumCPU()`函数获取当前系统的CPU核心数,并打印出来。然后,我们使用`runtime.GOMAXPROCS()`函数将GOMAXPROCS的值设置为系统CPU核心数,以充分利用所有CPU核心。 接下来,我们使用`syscall.SetAffinity()`函数将程序绑定到第一个CPU核心上。在`SetAffinity`函数的第一个参数中,`0`表示当前进程。在第二个参数中,我们传递了一个包含要绑定的CPU核心索引的切片。在这个例子中,我们将程序绑定到了第一个CPU核心上。