首页  >  文章  >  后端开发  >  golang 管道线程安全吗

golang 管道线程安全吗

(*-*)浩
(*-*)浩原创
2019-12-30 14:48:505943浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn