Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "time"
- "sync"
- "math/rand"
- )
- var (
- wg sync.WaitGroup
- mutex sync.Mutex
- password int
- )
- func create_password() {
- seed := rand.NewSource(time.Now().UnixNano())
- generator := rand.New(seed)
- password = generator.Intn(100)
- }
- func producer(buffer chan int) {
- for i := 0; i<=100; i++ {
- fmt.Printf("%s\n", "producing")
- fmt.Println(i)
- buffer <- i
- }
- close(buffer)
- }
- func consumer(buffer chan int, result_channel chan bool) {
- for i := range buffer {
- fmt.Printf("%s\n", "consuming")
- fmt.Println(i)
- if i == password {
- wg.Done()
- result_channel <- true
- }
- }
- wg.Done()
- result_channel <- false
- }
- func generate_array() []int {
- seed := rand.NewSource(time.Now().UnixNano())
- generator := rand.New(seed)
- array := make([]int, 10)
- for i := 0; i < 10; i ++ {
- array[i] = generator.Intn(100)
- }
- return array
- }
- func main() {
- create_password()
- buffer := make(chan int)
- result_channel := make(chan bool)
- wg.Add(1)
- go producer(buffer)
- go consumer(buffer, result_channel)
- wg.Wait()
- result := <- result_channel
- fmt.Println(result)
- }
Add Comment
Please, Sign In to add comment