package main import ( "fmt" "runtime" "sync" "time" ) var globalSum int64 // 进一步增加循环次数,单任务耗时延长到10秒以上 func longCPUTask(id int) { localSum := int64(0) loopCount := int64(500000000) * int64(id+1) // 循环次数:5e8→2e9(耗时≈10s→40s) for j := int64(1); j < loopCount; j++ { localSum = (localSum + j*j%987654321) * 1000000007 % 123456789 if j%100000000 == 0 { // 极低频率写入全局变量,最大化独占P时间 globalSum = localSum } } } func main() { runtime.GOMAXPROCS(1) var wg sync.WaitGroup startTime := time.Now() taskDurations := make([]time.Duration, 4) for i := 0; i < 4; i++ { wg.Add(1) id := i go func() { defer wg.Done() taskStart := time.Now() longCPUTask(id) taskDurations[id] = time.Since(taskStart) }() } wg.Wait() totalDuration := time.Since(startTime) fmt.Println("GOMAXPROCS=1") sumDurations := time.Duration(0) for i := 0; i < 4; i++ { fmt.Printf("任务%d 耗时: %v\n", i, taskDurations[i]) sumDurations += taskDurations[i] } fmt.Printf("总耗时: %v, 4个任务之和: %v(接近)\n", totalDuration, sumDurations) }