博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[GO]goroutine的使用
阅读量:5152 次
发布时间:2019-06-13

本文共 1258 字,大约阅读时间需要 4 分钟。

package mainimport (    "fmt"    "time")func NewTask()  {    for true {        fmt.Println("this is a newtesk goroutine")        time.Sleep(time.Second) //延时1    }}func main() {    //一定要写在下面的死循环之前    go NewTask()//使用go关键字新建一个协程    for true {        fmt.Println("this is a main goroutine")        time.Sleep(time.Second) //延时1    }    //NewTask()//如果按照这里的写法,这个方法肯定不会被调用到的}

执行的结果

this is a main goroutinethis is a newtesk goroutinethis is a newtesk goroutinethis is a main goroutinethis is a main goroutinethis is a newtesk goroutinethis is a main goroutinethis is a newtesk goroutinethis is a main goroutinethis is a newtesk goroutine///

 这里有一点需要注意的是:在一个程序启动时,其主函数即在一个单独的goroutine中运行,我们叫它main goroutine,新的goroutine会用go语句来创建,当主协程(main goroutine)退出时,其它的子协程也会退出,验证一下

package mainimport (    "fmt"    "time")func main() {    go func() {        i := 0        for true {            i ++            fmt.Println(" 子协程 i = ", i)            time.Sleep(time.Second)        }    }()    i := 0    for true {        i ++        fmt.Println(" 主协程 i = ", i)        time.Sleep(time.Second)        if i == 2{            break        }    }}

 执行结果

主协程 i =  1 子协程 i =  1 主协程 i =  2 子协程 i =  2

 被调用的匿名函数是无限循环,当主协程退出时,子协助就算是无限循环也退出了

转载于:https://www.cnblogs.com/baylorqu/p/9670148.html

你可能感兴趣的文章
图像旋转
查看>>
九宫格抽奖
查看>>
阅读笔记第五章
查看>>
金蝶数据库执行语句
查看>>
前端SEO技巧
查看>>
python+selenium遇到鼠标悬停不成功可以使用js进行操作
查看>>
我的退休程序修正过程
查看>>
Java程序优化细节
查看>>
baihuilong advertising test
查看>>
Maven安装配置
查看>>
ORA-10635: Invalid segment or tablespace type
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Windows 8 操作系统 购买过程
查看>>
软件工程课程-个人编程作业
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
GitLab+Nginx(SSL)+MySQL+Ruby安装部署
查看>>
visualSVN server安装使用
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
网络的基础知识
查看>>
ObjectiveC基础教程(第2版)
查看>>