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, 日志处理

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

你可能感兴趣的:(go协程)