github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/highperf/concurrency.go.notouch (about) 1 // +build ignore 2 3 package pkg 4 5 func serial() { 6 var lists []List 7 var items []Item 8 _, err := datastore.NewQuery("List").GetAll(c, &lists) 9 if err != nil { /* ... */ } 10 _, err := datastore.NewQuery("Item").GetAll(c, &items) 11 if err != nil { /* ... */ } 12 // write response 13 } 14 15 func parallel() { 16 var lists []List 17 var items []Item 18 errc := make(chan error) // HL 19 go func() { // HL 20 _, err := datastore.NewQuery("List").GetAll(c, &lists) 21 errc <- err 22 }() // HL 23 go func() { // HL 24 _, err := datastore.NewQuery("Item").GetAll(c, &items) 25 errc <- err 26 }() // HL 27 err1, err2 := <-errc, <-errc // HL 28 if err1 != nil || err2 != nil { /* ... */ } 29 // write response 30 }