sync.go 726 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "fmt"
  4. "sync"
  5. )
  6. func work() {
  7. fmt.Println("It's function `work()`")
  8. }
  9. func main() {
  10. wg := new(sync.WaitGroup)
  11. for i := 0; i < 10; i++ {
  12. wg.Add(1)
  13. go func(wg *sync.WaitGroup) {
  14. defer wg.Done()
  15. work()
  16. }(wg)
  17. }
  18. wg.Wait()
  19. fmt.Println("End")
  20. }
  21. /*
  22. func main() {
  23. wg := new(sync.WaitGroup)
  24. for i := 0; i < 5; i++ {
  25. wg.Add(1)
  26. go work(i, wg)
  27. }
  28. wg.Wait()
  29. fmt.Println("Горутины завершили выполнение")
  30. }
  31. func work(id int, wg *sync.WaitGroup) {
  32. defer wg.Done()
  33. fmt.Printf("Горутина %d начала выполнение \n", id)
  34. time.Sleep(2 * time.Second)
  35. fmt.Printf("Горутина %d завершила выполнение \n", id)
  36. }
  37. */