golang 管道线程安全吗


本文摘自php中文网,作者(*-*)浩,侵删。

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

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

channel用于goroutine之间的通信

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

1

2

3

4

5

6

// 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 管道线程安全吗的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

分享一个golang http 验证码示例

golang如何实现简单的api网关

解析golang iris怎么使用

【gocn酷go推荐】网络流量抓包库 gopacket介绍

在 docker 下 golang 的 gomaxprocs 初始化混乱问题

聊聊golang的zap的sink

go的切片(进阶版)

教你用golang实现直播和点播功能

tools easily execute sql against structured text like csv or tsv

go-carbon 1.2.4 版本发布,新增系列时间比较方法

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...