github.com/guestin/mob@v1.1.1/msync/worker_pool_test.go (about) 1 package msync 2 3 import ( 4 "context" 5 "fmt" 6 "runtime" 7 "testing" 8 "time" 9 ) 10 11 func BenchmarkWorkerPool(b *testing.B) { 12 caseFn := func() { 13 cancel, cancelFunc := context.WithCancel(context.Background()) 14 defer cancelFunc() 15 pool := NewWorkerPool(cancel, "tester", runtime.NumCPU()) 16 pool.SetIdleMax(time.Second * 5) 17 defer pool.Wait() 18 for i := 0; i < 100; i++ { 19 s := fmt.Sprintf("task:%d", i) 20 pool.Submit(func() { 21 println(s, " enter") 22 println(s, " exit") 23 time.Sleep(time.Second * 1) 24 }) 25 } 26 } 27 b.ResetTimer() 28 for i := 0; i < 20; i++ { 29 caseFn() 30 println("\n\n\n\n") 31 } 32 }