首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user