利用Golang实现高性能的并发编程
package main
import (
"fmt"
"sync"
"sync/atomic"
"time"
)
var (
wg sync.WaitGroup
counter int32
)
func main() {
start := time.Now()
for i := 0; i < 1000; i++ {
wg.Add(1)
go incrementCounter()
}
wg.Wait() // Wait for all goroutines to finish
elapsed := time.Since(start)
fmt.Printf("Counter: %d\n", counter)
fmt.Printf("Time taken: %s\n", elapsed)
}
func incrementCounter() {
defer wg.Done()
atomic.AddInt32(&counter, 1)
}
这段代码使用了sync
和sync/atomic
包来处理并发。wg.Add(1)
为等待组添加一个计数,每个并发执行的任务会调用incrementCounter
函数,它通过atomic.AddInt32(&counter, 1)
以原子方式递增全局计数器counter
。使用sync.WaitGroup
确保主函数等待所有goroutine完成后再打印结果和耗时。这是一个简单的并发编程示例,展示了Go语言中的高效原子操作和并发处理。
评论已关闭