From 45239efacc1735c0424db972c49f850692ead345 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 23 Oct 2012 18:45:23 -0400 Subject: [PATCH] Playing with channels --- gotime/src/channels.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 gotime/src/channels.go diff --git a/gotime/src/channels.go b/gotime/src/channels.go new file mode 100644 index 0000000..0b9722a --- /dev/null +++ b/gotime/src/channels.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "time" + "math" +) + +func sum(a []int, c chan int) { + sum := 0 + for _, v := range a { + sum += v + } + to_sleep := time.Duration(100 * math.Abs(float64(sum))) * time.Millisecond + fmt.Printf("Sleeping %s...\n", to_sleep) + time.Sleep(to_sleep) + c <- sum +} + +func main() { + a := []int{7, 2, 8, -9, 4, 0} + + c := make(chan int) + go sum(a[:len(a)/2], c) + go sum(a[len(a)/2:], c) + x := <-c + fmt.Printf("x = %d\n", x) + y := <-c + fmt.Printf("y = %d\n", y) + fmt.Println(x, y, x + y) +}