调用并发度:
package main
import (
"fmt"
"sync/atomic"
"time"
)
var (
concurrent int32
concurrentLimit = make(chan struct{}, 10)
)
func readDB() string {
atomic.AddInt32(&concurrent, 1)
fmt.Printf("readDB调用并发度 %d\n", atomic.LoadInt32(&concurrent))
time.Sleep(200 * time.Millisecond)
atomic.AddInt32(&concurrent, -1)
return "ok"
}
func handler() {
concurrentLimit <- struct{}{}
readDB()
<-concurrentLimit
return
}
func main() {
for i := 0; i < 100; i++ {
go handler()
}
time.Sleep(3 * time.Second)
}