// ========================================================================== // $Id: lettersnumbers.go,v 1.1 2014/04/02 20:51:53 jlang Exp $ // CSI2120 GO: Concurrency // ========================================================================== // (C)opyright: // // Jochen Lang // EECS, University of Ottawa // 800 King Edward Ave. // Ottawa, On., K1N 6N5 // Canada. // http://www.eecs.uottawa.ca // // Creator: Jochen Lang (based on example by R. Laganiere) // Email: jlang@eecs.uottawa.ca // ========================================================================== // $Log: lettersnumbers.go,v $ // Revision 1.1 2014/04/02 20:51:53 jlang // Created the concurrency examples // // ========================================================================== package main import ( "fmt" "runtime" "time" ) func main() { runtime.GOMAXPROCS(3) sTime := time.Now(); // time it fmt.Println("Starting") go letters() // goroutine A go numbers() // goroutine B /* // without concurrency letters() numbers() */ fmt.Println("Waiting ...") time.Sleep(2*time.Second) fmt.Println("\nDone\n") eTime := time.Now(); fmt.Printf("Run time: %s", eTime.Sub(sTime)) } func numbers() { for number := 1; number < 27; number++ { // pause before every print time.Sleep(10*time.Millisecond) fmt.Printf("%d ", number) } } func letters() { for char := 'a'; char < 'a'+26; char++ { time.Sleep(10) fmt.Printf("%c ", char) } }