go入门(七)2018-07-19

go并发

goroutine

Go运行环境管理的轻量级线程
go xxx 启动新的goroutine

channel

有类型的管道,使用-> 和 <-来表示发送和接收,箭头代表数据流的方向

创建

与slice/map一样使用make创建
ch := make(chan int)
默认情况下,在另一端准备好之前,发送和接收都会阻塞,这使得goroutine可以在没有明确锁的情况下保持同步

缓冲

channel可以带缓冲,发送方只有在缓冲区满的时候才会阻塞;接收方在缓冲区清空时接收阻塞

range和close

发送方在发送完成之后可以在close对应的channel; channel与文件不同,通常情况下不需要关闭,只有在发送方没有更多数据的时候才需要关闭,例如中断一个range

select

使得一个goroutine在多个通信操作上等待;
select会阻塞,直到某个条件分支可以执行

sync.Mutex

互斥操作

    原文作者:Yao_oaY
    原文地址: https://www.jianshu.com/p/2b4530f34966
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞