Skip to content
Snippets Groups Projects
Commit f41b31ad authored by Marcus Schiesser's avatar Marcus Schiesser
Browse files

added multiple producer/consumer with equal number of producers/consumers

parent a9539f7e
No related branches found
No related tags found
No related merge requests found
package main
import (
"fmt"
"sync"
)
const (
PRODUCERS = 10
CONSUMERS = 10
)
var (
ch chan string
wg sync.WaitGroup
)
func main() {
ch = make(chan string)
for i := 1; i < PRODUCERS; i++ {
createProducer(i)
}
for i := 1; i < CONSUMERS; i++ {
createConsumer(i)
}
// wait for producer and consumers
wg.Wait()
fmt.Println("Consumers and producers are finished.")
}
func createConsumer(i int) {
fmt.Printf("Starting consumer %d\n", i)
wg.Add(1)
go func() {
defer wg.Done()
msg := <-ch
fmt.Printf("Consumer %d received message: %v\n", i, msg)
}()
}
func createProducer(i int) {
fmt.Printf("Starting producer %d\n", i)
wg.Add(1)
go func() {
defer wg.Done()
ch <- fmt.Sprintf("Hi from producer %d", i)
fmt.Printf("Producer %d done\n", i)
}()
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment