feat(Go-StudyExample):2020/12/16: 包重命名
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* @Author : huangzj
|
||||
* @Time : 2020/12/16 9:32
|
||||
* @Description:
|
||||
*/
|
||||
|
||||
package snowflake
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
func TestSnowflake(t *testing.T) {
|
||||
w := NewWorker(5, 5)
|
||||
|
||||
ch := make(chan uint64, 10000)
|
||||
count := 10000
|
||||
wg.Add(count)
|
||||
defer close(ch)
|
||||
//并发 count个goroutine 进行 snowFlake ID 生成
|
||||
for i := 0; i < count; i++ {
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
id, _ := w.NextID()
|
||||
ch <- id
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
m := make(map[uint64]int)
|
||||
for i := 0; i < count; i++ {
|
||||
id := <-ch
|
||||
// 如果 map 中存在为 id 的 key, 说明生成的 snowflake ID 有重复
|
||||
_, ok := m[id]
|
||||
if ok {
|
||||
fmt.Printf("repeat id %d\n", id)
|
||||
return
|
||||
} else {
|
||||
fmt.Printf("id: %d", id)
|
||||
}
|
||||
// 将 id 作为 key 存入 map
|
||||
m[id] = i
|
||||
}
|
||||
// 成功生成 snowflake ID
|
||||
fmt.Println("All", len(m), "snowflake ID Get successed!")
|
||||
}
|
||||
Reference in New Issue
Block a user