123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package threading
- import (
- "io/ioutil"
- "log"
- "sync"
- "sync/atomic"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestRoutineGroupRun(t *testing.T) {
- var count int32
- group := NewRoutineGroup()
- for i := 0; i < 3; i++ {
- group.Run(func() {
- atomic.AddInt32(&count, 1)
- })
- }
- group.Wait()
- assert.Equal(t, int32(3), count)
- }
- func TestRoutingGroupRunSafe(t *testing.T) {
- log.SetOutput(ioutil.Discard)
- var count int32
- group := NewRoutineGroup()
- var once sync.Once
- for i := 0; i < 3; i++ {
- group.RunSafe(func() {
- once.Do(func() {
- panic("")
- })
- atomic.AddInt32(&count, 1)
- })
- }
- group.Wait()
- assert.Equal(t, int32(2), count)
- }
|