producer_consumer.go 525 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // goroutines2.go
  2. package main
  3. import "fmt"
  4. // integer producer:
  5. func numGen(start, count int, out chan<- int) {
  6. for i := 0; i < count; i++ {
  7. out <- start
  8. start = start + count
  9. }
  10. close(out)
  11. }
  12. // integer consumer:
  13. func numEchoRange(in <-chan int, done chan<- bool) {
  14. for num := range in {
  15. fmt.Printf("%d\n", num)
  16. }
  17. done <- true
  18. }
  19. func main() {
  20. numChan := make(chan int)
  21. done := make(chan bool)
  22. go numGen(0, 10, numChan)
  23. go numEchoRange(numChan, done)
  24. <-done
  25. }
  26. /* Output:
  27. 0
  28. 10
  29. 20
  30. 30
  31. 40
  32. 50
  33. 60
  34. 70
  35. 80
  36. 90
  37. */