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如何实现简单的api网关

go time

go mongodb

手撸golang go与微服务 saga模式之1

golang 冒泡排序

go 语言是谷歌的,而非社区的

你或许听过对golang map做gc?

手撸golang 创建型设计模式 简单工厂

go学习五·切片

go 大数据生态迎来重要产品 cds

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




打赏

取消

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

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

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

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

评论

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