开启gorouutine
1 import ( 2 "fmt" 3 "time" 4 ) 5 6 func Hello(){ 7 fmt.Println("hello") 8 } 9 10 func main() { 11 //开启goroutine需要在调用的函数前边加上go关键字即可 12 go Hello() 13 fmt.Println(" i love you") 14 //加入sleep的目的就是当go启动时默认创建一个goroutine只要main函数结束就都结束了因此睡眠1秒 15 time.Sleep(time.Second) 16 }
go语言开启多个goroutine
1 import ( 2 "fmt" 3 "sync" 4 ) 5 6 var wg sync.WaitGroup 7 8 func Hello(i int){ 9 fmt.Println("hello+",i) 10 //Done方法减少WaitGroup计数器的值,应在线程的最后执行。 11 wg.Done() 12 } 13 14 func main() { 15 //启动多个goroutine 16 for i:=0;i<10;i++{ 17 /* 18 Add方法向内部计数加上delta,delta可以是负数;如果内部计数器变为0,Wait方法阻塞等待的所有线程都会释放,如果计数器小于0, 19 方法panic。注意Add加上正数的调用应在Wait之前,否则Wait可能只会等待很少的线程。一般来说本方法应在创建新的线程或者其他应 20 等待的事件之前调用。 21 */ 22 wg.Add(1) 23 go Hello(i) 24 } 25 /* 26 Wait方法阻塞直到WaitGroup计数器减为0。 27 */ 28 wg.Wait() 29 }