Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "log"
- "sync"
- )
- func main() {
- inChan := make(chan workToDo, 2)
- outChan := make(chan workResult, 2)
- var wg sync.WaitGroup
- wg.Add(1)
- go startWorker(inChan, outChan, &wg)
- wg.Add(1)
- go startWorker(inChan, outChan, &wg)
- go func() {
- inChan <- workToDo{messageIn: "foo"}
- inChan <- workToDo{messageIn: "bar"}
- inChan <- workToDo{messageIn: "baz"}
- close(inChan)
- }()
- go func() {
- wg.Wait()
- close(outChan)
- }()
- for v := range outChan {
- log.Printf("%#v\n", v)
- }
- }
- type workToDo struct {
- messageIn string
- }
- type workResult struct {
- messageOut string
- }
- func startWorker(in chan workToDo, out chan workResult, wg *sync.WaitGroup) {
- for v := range in {
- log.Printf("%#v\n", v)
- out <- workResult{messageOut: "Echo: " + v.messageIn}
- }
- wg.Done()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement