print.go 486 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package api
  2. import (
  3. "fmt"
  4. "sync"
  5. "time"
  6. "github.com/gin-gonic/gin"
  7. )
  8. func Printr(c *gin.Context, apictx *ApiSession) (interface{}, error) {
  9. c1 := make(chan int)
  10. var wg sync.WaitGroup
  11. for i := 0; i < 3; i++ {
  12. wg.Add(1)
  13. go work(&wg, c1, i)
  14. }
  15. go func() {
  16. wg.Wait()
  17. close(c1)
  18. }()
  19. for n := range c1 {
  20. fmt.Println(n)
  21. }
  22. return nil, nil
  23. }
  24. func work(wg *sync.WaitGroup, c1 chan<- int, n int) {
  25. if n == 1 {
  26. time.Sleep(1 * time.Second)
  27. }
  28. c1 <- n
  29. wg.Done()
  30. }