两个goroutines里面的话:

来源:互联网 发布:在淘宝上刷信用卡套现 编辑:程序博客网 时间:2024/05/21 11:09




package main


import (
    "fmt"
)


func loop(done chan bool) {
    for i := 0; i < 10; i++ {
        fmt.Print(i)
    }
    done <- true
}


func main() {
    done := make(chan bool)
    go loop(done)
    go loop(done)


    <-done
    <-done


}
复制代码
他的输出结果: 01234567890123456789


go不是会新起一个goroutine来运行loop函数吗。以前我们用线程去做类似任务的时候,系统的线程会抢占式地输出, 表现出来的是乱序地输出。而goroutine为什么是这样输出的呢?


package mainimport (    "fmt")func loop(done chan bool) {    for i := 0; i < 10; i++ {        fmt.Print(i)    }    done <- true}func main() {    done := make(chan bool)    go loop(done)    go loop(done)    <-done    <-done}
复制代码
他的输出结果: 01234567890123456789
go不是会新起一个goroutine来运行loop函数吗。以前我们用线程去做类似任务的时候,系统的线程会抢占式地输出, 表现出来的是乱序地输出。而goroutine为什么是这样输出的呢?
0 0