12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package main
- import (
- "fmt"
- "sync/atomic"
- "time"
- )
- func main() {
- data := []int32{}
- tcount := int32(1000000000)
- counta := int32(0)
- countb := int32(0)
- countc := int32(0)
- countd := int32(0)
- go func() {
- for i := int32(0); i < tcount; i++ {
- go func() {
- go func() {
- // time.Sleep(10 * time.Microsecond)
- data = append(data, atomic.AddInt32(&counta, 1))
- }()
- go func() {
- // time.Sleep(10 * time.Microsecond)
- data = append(data, atomic.AddInt32(&countb, 1))
- }()
- go func() {
- // time.Sleep(10 * time.Microsecond)
- data = append(data, atomic.AddInt32(&countc, 1))
- }()
- go func() {
- // time.Sleep(10 * time.Microsecond)
- data = append(data, atomic.AddInt32(&countd, 1))
- }()
- }()
- time.Sleep(1 * time.Microsecond)
- }
- }()
- to := time.Now()
- for counta < tcount && countb < tcount && countc < tcount && countd < tcount {
- if time.Since(to) > 1000*time.Millisecond {
- println("......")
- go fmt.Println(time.Now().String()[:23], " ", counta, " ", countb, " ", countc, " ", countd)
- to = time.Now()
- }
- time.Sleep(1 * time.Microsecond)
- }
- fmt.Println(time.Now().String()[:23], " ", counta, " ", countb, " ", countc, " ", countd)
- }
|