Files
ProjectOctopus/server-go/test/channelTest.go
2024-06-14 10:37:40 +08:00

38 lines
587 B
Go
Executable File

package main
import "fmt"
func sum(start, end uint64, result chan uint64) {
var sum uint64 = 0
for i := start; i <= end; i++ {
sum += i
}
result <- sum
}
func main() {
const n uint64 = 5000000000
var numCPU int = 4
result := make(chan uint64, numCPU)
var chunkSize uint64 = n / uint64(numCPU)
var start uint64 = 1
var end uint64 = chunkSize
for i := 0; i < numCPU; i++ {
go sum(start, end, result)
start = end + 1
end += chunkSize
}
var total uint64 = 0
for i := 0; i < numCPU; i++ {
partialSum := <-result
total += partialSum
}
fmt.Println(total)
}