threads_test.go 989 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package jconcurrency
  2. import (
  3. "fmt"
  4. "log"
  5. "testing"
  6. )
  7. //调用并发包实现,只接收一个参数,构造一个结构体,使用的时候强转一下,如下。推荐
  8. func Test_threadRunStruct(t *testing.T) {
  9. th := NewThreads(10, TFuncWithStruct)
  10. jm := NewJM()
  11. for i := 0; i < 1000; i++ {
  12. //调用方法时,传递结构体
  13. th.Run(Args{i, jm})
  14. }
  15. th.Wait()
  16. log.Println("====", len(jm.Data))
  17. }
  18. type Args struct {
  19. num int
  20. jm *JyMap
  21. }
  22. //使用方法时,强转结构体
  23. func TFuncWithStruct(s any) {
  24. as := s.(Args)
  25. as.jm.Set(as.num, as.num)
  26. }
  27. //调用并发包实现,只接收一个参数
  28. func Test_threadRun(t *testing.T) {
  29. th := NewThreads(10, testFuncWithAny)
  30. for i := 0; i < 1000; i++ {
  31. th.Run(i)
  32. }
  33. }
  34. //一般实现,只接入一个any参数
  35. func Test_threadCommon(t *testing.T) {
  36. th := NewThreads(10, nil)
  37. for i := 0; i < 1000; i++ {
  38. th.RunCommon(testFuncWithAny, fmt.Sprintf("AA%dAA", i))
  39. }
  40. }
  41. func testFuncWithAny(a any) {
  42. log.Println(a)
  43. }