Tôi mới sử dụng Google Go (Golang). Câu hỏi của tôi liên quan đến bài viết này What exactly does runtime.Gosched do?. Cấu trúc mã được sao chép dưới đây. Câu hỏi của tôi, là khi tôi thay đổi số lượng bộ xử lý trong GOMAXPROCS, làm cách nào để xác minh số lượng bộ xử lý đang chạy. Khi tôi làm 'top', nó cho thấy quá trình a.out tiêu thụ 100% hoặc ít tài nguyên hơn ngay cả khi GOMAXPROCS lớn hơn 1. Tôi sẽ biết ơn sự giúp đỡ của bạn.Golang: cách xác minh số bộ vi xử lý mà chương trình Go đang chạy
package main
import (
"fmt"
"runtime"
"sync"
)
var wg sync.WaitGroup
func doTasks() {
fmt.Println(" Doing task ")
for ji := 1; ji < 100000000; ji++ {
for io := 1; io < 10; io++ {
//Some computations
}
}
runtime.Gosched()
wg.Done()
}
func main() {
wg.Add(1)
runtime.GOMAXPROCS(1) // or 2 or 4
go doTasks()
doTasks()
wg.Wait()
}
Hệ điều hành nào bạn đang thử nghiệm tính năng này? Ngoài ra nó sẽ rất hữu ích để biết bạn sử dụng CPU nào. Tôi không thể tái tạo hành vi. – nemo
cat/etc/* - trả về bản phát hành: Red Hat Enterprise Linux Workstation release 6.3 (Santiago). Hệ điều hành là Linux. CPU là CPU Intel (R) Xeon (R), X5460 @ 3.16GHz. NumCPU trả về 8. – user984260
@nemo Chương trình chạy hoàn toàn tốt. Chỉ có tôi đã tò mò làm thế nào để xem số lượng bộ vi xử lý mà nó đang chạy – user984260