example_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package errgroup
  2. import (
  3. "context"
  4. "sync"
  5. )
  6. func fakeRunTask(ctx context.Context) error {
  7. return nil
  8. }
  9. func ExampleGroup_group() {
  10. g := Group{}
  11. g.Go(func() error {
  12. return fakeRunTask(context.Background())
  13. })
  14. g.Go(func() error {
  15. return fakeRunTask(context.Background())
  16. })
  17. if err := g.Wait(); err != nil {
  18. // handle err
  19. }
  20. }
  21. func ExampleGroup_ctx() {
  22. g, ctx := WithContext(context.Background())
  23. g.Go(func() error {
  24. return fakeRunTask(ctx)
  25. })
  26. g.Go(func() error {
  27. return fakeRunTask(ctx)
  28. })
  29. if err := g.Wait(); err != nil {
  30. // handle err
  31. }
  32. }
  33. func ExampleGroup_maxproc() {
  34. g := Group{}
  35. // set max concurrency
  36. g.GOMAXPROCS(2)
  37. g.Go(func() error {
  38. return fakeRunTask(context.Background())
  39. })
  40. g.Go(func() error {
  41. return fakeRunTask(context.Background())
  42. })
  43. if err := g.Wait(); err != nil {
  44. // handle err
  45. }
  46. }
  47. func ExampleGroup_waitgroup() {
  48. var wg sync.WaitGroup
  49. wg.Add(2)
  50. go func() {
  51. // do something
  52. wg.Done()
  53. }()
  54. go func() {
  55. // do something
  56. wg.Done()
  57. }()
  58. wg.Wait()
  59. }