diff --git a/concurrency/fan/main.go b/concurrency/fan/main.go deleted file mode 100644 index 8e30f05..0000000 --- a/concurrency/fan/main.go +++ /dev/null @@ -1,62 +0,0 @@ -package main - -import ( - "fmt" -) - -func main() { - randomNumbers := []int{13, 44, 56, 99, 9, 45, 67, 90, 78, 23} - // generate the common channel with inputs - inputChan := generatePipeline(randomNumbers) - - // Fan-out to 2 Go-routine - c1 := squareNumber(inputChan) - c2 := squareNumber(inputChan) - - // Fan-in the resulting squared numbers - c := fanIn(c1, c2) - sum := 0 - - // Do the summation - for i := 0; i < len(randomNumbers); i++ { - sum += <-c - } - fmt.Printf("Total Sum of Squares: %d", sum) -} - -func generatePipeline(numbers []int) <-chan int { - out := make(chan int) - go func() { - for _, n := range numbers { - out <- n - } - close(out) - }() - return out -} - -func squareNumber(in <-chan int) <-chan int { - out := make(chan int) - go func() { - for n := range in { - out <- n * n - } - close(out) - }() - return out -} - -func fanIn(input1, input2 <-chan int) <-chan int { - c := make(chan int) - go func() { - for { - select { - case s := <-input1: - c <- s - case s := <-input2: - c <- s - } - } - }() - return c -} diff --git a/concurrency/faninfanout/main.go b/messaging/fan_in_out/main.go similarity index 100% rename from concurrency/faninfanout/main.go rename to messaging/fan_in_out/main.go