package main
import (
"fmt"
"time"
)
//子goroutine
func newTask() {
for i := 0; i<3; i++ {
fmt.Printf("new Goroutine : i = %d\n", i)
time.Sleep(1 * time.Second)
}
}
//主goroutine
func main() {
//创建一个go协程去执行newTask()
go newTask()
for i := 0; i<3; i++ {
fmt.Printf("main goroutine: i = %d\n", i)
time.Sleep(1 * time.Second)
}
}
输出结果:
main goroutine: i = 0
new Goroutine : i = 0
main goroutine: i = 1
new Goroutine : i = 1
main goroutine: i = 2
new Goroutine : i = 2
或者
main goroutine: i = 0
new Goroutine : i = 0
new Goroutine : i = 1
main goroutine: i = 1
new Goroutine : i = 2
main goroutine: i = 2
等随机交替效果。
如果主goroutine这里不sleep的话,子goroutine就没机会执行。
package main
import (
"fmt"
"time"
)
//子goroutine
func newTask() {
for i := 0; i<3; i++ {
fmt.Printf("new Goroutine : i = %d\n", i)
time.Sleep(1 * time.Second)
}
}
//主goroutine
func main() {
//创建一个go协程去执行newTask()
go newTask()
for i := 0; i<3; i++ {
fmt.Printf("main goroutine: i = %d\n", i)
//time.Sleep(1 * time.Second)
}
}
输出结果:
main goroutine: i = 0
main goroutine: i = 1
main goroutine: i = 2