Guest User

Untitled

a guest
Feb 24th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "time"
  6. "sync"
  7. "math/rand"
  8. )
  9.  
  10.  
  11. var (
  12. wg sync.WaitGroup
  13. mutex sync.Mutex
  14. password int
  15. )
  16.  
  17. func create_password() {
  18. seed := rand.NewSource(time.Now().UnixNano())
  19. generator := rand.New(seed)
  20. password = generator.Intn(100)
  21. }
  22.  
  23.  
  24. func producer(buffer chan int) {
  25. for i := 0; i<=100; i++ {
  26. fmt.Printf("%s\n", "producing")
  27. fmt.Println(i)
  28. buffer <- i
  29. }
  30. close(buffer)
  31. }
  32.  
  33. func consumer(buffer chan int, result_channel chan bool) {
  34. for i := range buffer {
  35. fmt.Printf("%s\n", "consuming")
  36. fmt.Println(i)
  37. if i == password {
  38. wg.Done()
  39. result_channel <- true
  40. }
  41. }
  42. wg.Done()
  43. result_channel <- false
  44. }
  45.  
  46. func generate_array() []int {
  47. seed := rand.NewSource(time.Now().UnixNano())
  48. generator := rand.New(seed)
  49. array := make([]int, 10)
  50. for i := 0; i < 10; i ++ {
  51. array[i] = generator.Intn(100)
  52. }
  53. return array
  54. }
  55.  
  56. func main() {
  57. create_password()
  58. buffer := make(chan int)
  59. result_channel := make(chan bool)
  60. wg.Add(1)
  61. go producer(buffer)
  62. go consumer(buffer, result_channel)
  63. wg.Wait()
  64. result := <- result_channel
  65. fmt.Println(result)
  66. }
Add Comment
Please, Sign In to add comment