Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Pipeline map

package main

import (
	"fmt"
	"time"
)

func double(in <-chan int, out chan<- int) {
	for {
		number := <-in
		dbl := 2 * number
		//secs := 100000 //rand.Intn(10)
		time.Sleep(1000000000)
		out <- dbl
	}
}

func main() {
	jobs := make(chan int, 6)
	results := make(chan int)

	go double(jobs, results)
	// go double(ch1, ch2)
	// go double(ch1, ch2)
	numbers := []int{3, 7, 11, 8, 12, 4}
	start := time.Now()
	for _, n := range numbers {
		jobs <- n
	}

	for i := 0; i < len(numbers); i++ {
		res := <-results
		fmt.Println(res)
	}

	end := time.Now()
	fmt.Printf("Elapsed time: %v\n", end.Sub(start))
	close(jobs)
	fmt.Println("done")
}