首页 > 后端开发 > Golang > 正文

golang 管道线程安全吗

(*-*)浩
发布: 2019-12-30 14:48:50
原创
5952 人浏览过

golang 管道线程安全吗

如果把线程安全定义为允许多个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 管道线程安全吗的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板