首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
// bulma/atomic_counter.go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var atomicCounter atomic.Int64 // 原子计数器(新类型)
|
||||
var muCounter int64 // Mutex保护的计数器
|
||||
var mu sync.Mutex // 互斥锁
|
||||
|
||||
// 原子操作计数
|
||||
start := time.Now()
|
||||
var wg sync.WaitGroup
|
||||
for i := 0; i < 1000; i++ {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for j := 0; j < 1000; j++ {
|
||||
atomicCounter.Add(1)
|
||||
}
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
atomicTime := time.Since(start)
|
||||
|
||||
// Mutex 计数(对比)
|
||||
start = time.Now()
|
||||
for i := 0; i < 1000; i++ {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
for j := 0; j < 1000; j++ {
|
||||
mu.Lock()
|
||||
muCounter++
|
||||
mu.Unlock()
|
||||
}
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
mutexTime := time.Since(start)
|
||||
|
||||
fmt.Printf("✅ 原子计数: %d (耗时: %v)\n", atomicCounter.Load(), atomicTime)
|
||||
fmt.Printf("✅ Mutex计数: %d (耗时: %v)\n", muCounter, mutexTime)
|
||||
fmt.Printf("🚀 性能提升: %.1fx\n", float64(mutexTime)/float64(atomicTime))
|
||||
}
|
||||
Reference in New Issue
Block a user