mirror of
https://github.com/Estom/notes.git
synced 2026-02-04 11:04:21 +08:00
46 lines
767 B
Go
46 lines
767 B
Go
/**
|
||
* @Author:zhoutao
|
||
* @Date:2020/12/13 上午10:48
|
||
* @Desc:
|
||
*/
|
||
|
||
package single
|
||
|
||
import (
|
||
"sync"
|
||
"testing"
|
||
)
|
||
|
||
const parCount = 100
|
||
|
||
func TestSingleton(t *testing.T) {
|
||
ins1 := GetInstance()
|
||
ins2 := GetInstance()
|
||
if ins1 != ins2 {
|
||
t.Fatal("instance is not equal")
|
||
}
|
||
}
|
||
|
||
func TestParalleSingleton(t *testing.T) {
|
||
start := make(chan struct{})
|
||
wg := sync.WaitGroup{}
|
||
wg.Add(parCount)
|
||
instances := [parCount]*Singleton{}
|
||
for i := 0; i < parCount; i++ {
|
||
go func(index int) {
|
||
//等待channel的关闭信号
|
||
<-start
|
||
instances[index] = GetInstance()
|
||
wg.Done()
|
||
}(i)
|
||
}
|
||
//关闭channel,发送关闭信号
|
||
close(start)
|
||
wg.Wait()
|
||
for i := 1; i < parCount; i++ {
|
||
if instances[i] != instances[i-1] {
|
||
t.Fatal("instance is not equal")
|
||
}
|
||
}
|
||
}
|