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  }