RosettaCodeData/Task/Concurrent-computing/Go/concurrent-computing-1.go

24 lines
505 B
Go
Raw Permalink Normal View History

2013-04-10 16:57:12 -07:00
package main
import (
"fmt"
2018-06-22 20:57:24 +00:00
"golang.org/x/exp/rand"
2013-04-10 16:57:12 -07:00
"time"
)
func main() {
words := []string{"Enjoy", "Rosetta", "Code"}
2018-06-22 20:57:24 +00:00
seed := uint64(time.Now().UnixNano())
2013-04-10 16:57:12 -07:00
q := make(chan string)
2018-06-22 20:57:24 +00:00
for i, w := range words {
go func(w string, seed uint64) {
r := rand.New(rand.NewSource(seed))
time.Sleep(time.Duration(r.Int63n(1e9)))
2013-04-10 16:57:12 -07:00
q <- w
2018-06-22 20:57:24 +00:00
}(w, seed+uint64(i))
2013-04-10 16:57:12 -07:00
}
for i := 0; i < len(words); i++ {
fmt.Println(<-q)
}
}