Golang 使用 Goroutines 来提高性能
package main
import (
"fmt"
"sync"
"sync/atomic"
"time"
)
var count int32
func counter(wg *sync.WaitGroup) {
// 原子操作增加count值
atomic.AddInt32(&count, 1)
// 当goroutine完成时,通知WaitGroup
wg.Done()
}
func main() {
// 创建一个WaitGroup
var wg sync.WaitGroup
// 设置等待的goroutines数量
wg.Add(10)
start := time.Now()
// 创建多个goroutines
for i := 0; i < 10; i++ {
go counter(&wg)
}
// 等待所有goroutines完成
wg.Wait()
end := time.Now()
// 输出count值和耗费时间
fmt.Println("Count:", count)
fmt.Println("Time taken:", end.Sub(start))
}
这段代码创建了一个计数器函数counter
,该函数使用atomic.AddInt32
来原子性地增加计数。然后在main
函数中,我们创建了10个goroutines来并发执行这个计数器函数,并使用sync.WaitGroup
来同步它们的执行。最后,我们输出计数结果和运行时间来评估并发执行的性能。
评论已关闭