golang 管道线程安全吗

互联网 19-12-30

如果把线程安全定义为允许多个goroutine同时去读写,那么golang 的channel 是线程安全的。不需要在并发读写同一个channe时加锁。

golang中的channel (推荐学习:go)

channel用于goroutine之间的通信

如果不用channel,使用共享全局变量的方式,需要加锁

// synchornized 同步 // golang中的 sync包中有互斥锁  var lock sync.Mutex  // mutex 互斥 lock.Lock() // 上锁 // 多个goroutine同时对相同的数据进行修改 lock.Unlock() // 解锁

使用同步锁并发效率会很低

channel主要用于goroutine通信和解决主线程等待goroutine执行结束再退出的问题

basic concept of channel

本质上是一个FIFO的数据结构-队列

线程安全,不需要加锁

channel是有类型的,如字符串channel chan string,只能保存string数据

以上就是golang 管道线程安全吗的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:golang调试工具有哪些?

相关资讯