go协程 - Go语言中文社区

go协程


概念:gorountine原理就是协程,只不过这些协程的调度go已经在内部实现了,包括垃圾回收,任务管理,调度,所以我们开发不需要管协程的内部实现,只需要关注业务开发就可以,go从语言层面就实现了并发

原理:多任务快速切换,不需要操作系统调度,可以通过管道(channel)实现通讯

实现:

使用go的协程

    1.Go    func() {}()

   2. Fun:= func () {}

                    go fun()


通讯:

    1.Chan:= make(chan string[, 管道长度(int)], )

        默认不设置管道长度为无缓冲的管道,管道中只存储一个值

        设置之后为有缓冲的管道

   2. 管道数据的存取:

        Chan<- “value”

        Value := <-chan

sync实现等待协程执行结束

    Varwg sync.WaitGrou

    添加一个任务,在内部自增1

    结束任务,在wg内部减一

    检测wg中的计数器值是否为0,为0则继续执行,否则阻塞等待

应用场景:

    网络请求

    本地文件I/O, 日志处理

    通常用协程来实现异步的操作

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/c63d79e3be74
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:05:51
  • 阅读 ( 745 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢