Don't automatically do concurrency for users
http://talks.golang.org/2013/bestpractices.slide#25
This commit is contained in:
parent
0d11b8a0ba
commit
8b52f93ca5
19
id.go
19
id.go
@ -18,15 +18,16 @@ type IdGenerator struct {
|
||||
}
|
||||
|
||||
func NewIdGenerator() *IdGenerator {
|
||||
g := IdGenerator{}
|
||||
g.id = make(chan int64)
|
||||
go func() {
|
||||
var i int64
|
||||
for i = 0; ; i++ {
|
||||
g.id <- i
|
||||
}
|
||||
}()
|
||||
return &g
|
||||
return &IdGenerator{
|
||||
id: make(chan int64),
|
||||
}
|
||||
}
|
||||
|
||||
func (idg *IdGenerator) Run() {
|
||||
var i int64
|
||||
for i = 0; ; i++ {
|
||||
idg.id <- i
|
||||
}
|
||||
}
|
||||
|
||||
func (id *IdGenerator) Hash() string {
|
||||
|
@ -8,6 +8,7 @@ func TestIDGenerator(t *testing.T) {
|
||||
cache := make(map[string]bool)
|
||||
var cur string
|
||||
gg := NewIdGenerator()
|
||||
go gg.Run()
|
||||
for i := 0; i < 10000; i++ {
|
||||
cur = gg.Hash()
|
||||
if _, ok := cache[cur]; ok {
|
||||
|
Loading…
Reference in New Issue
Block a user