请教大家一个关于 golang channel 的问题,一个有缓存的 channel ,当里面的数据被接收完了之后,又没有其他线程往里面写数据,那么这时候是否会发生阻塞呢?

alfredhuo:这个完整的表述是:"有缓冲 channel,如果这个有缓冲的 channel 里面的数据被取完了,同时,新数据还没有写进来,那么从 channel 里面读取(消费)数据的 goroutine 是否会阻塞呢?"补充:这个完整的表述是:"有缓冲 channel,如果这个有缓冲的 channel 里面的数据被取完了,同时,新数据还没有写进来,那么从 channel 里面读取(消费)数据的 goroutine 是否会阻塞呢?"

akatquas:你这个阻塞的表述有问题。

buffered channel 为 0 时,写 是不阻塞的,读是阻塞的。

buffered channel 满了的时候, 写是阻塞的,读是不阻塞的。

useben:要看你是在读 chan 还是在写, 读的话就会阻塞或者 deadlock(没有其他写), 写接着往下运行(写不超过缓存)

sonxzjw:读的话会阻塞

alfredhuo:这个完整的表述是:"有缓冲 channel,如果这个有缓冲的 channel 里面的数据被取完了,同时,新数据还没有写进来,那么从 channel 里面读取(消费)数据的 goroutine 是否会阻塞呢?"

AngryPanda:没有超时机制的话,会。

golang 的模板为什么只能有一个数据根呢

iscraft:模板中要使用到的数据必须组合成为一个根 然后再渲染到页面 感觉好蛋疼啊在 php 里 随便加载一个 html 模板 当前可用的变量 在模板里随便写 都能渲染出来 真是方便啊 ???

golang 包的问题

lysS:我 go mod download 下载的包存在 GOPATH/pkg/mod/中 我 go mod vendor 将包烤到项目中 但是它都不去这两地方找,偏偏跑去 GOPATH/src 中找? 所以正确的姿势是啥?lysS:排版咋这样了,换行没了?预览时不是这样的啊。。。 lysS:我 go mod download 下载的包存在 GOPATH/…

golang 里面全局匿名变量的作用是啥?

iCD:看到过好几次别人的代码里面都有全局的匿名变量,比如这里: ... type cachedWriter struct { gin.ResponseWriter status int written bool store persistence.CacheStore expire time.Duration key string } var _ gin.…

又来招聘远程开发啦 Golang 区块链开发

tianlan:开源区块链项目寻求 golang 工程师长期合作,开发区块链功能,工具。 代码已经成熟,正在开发下一代系统,有高手一起开发。 项目地址: https://github.com/iotexproject/iotex-core 同时欢迎 star /follow 和提交 bug 。 技术要求:熟悉 Golang,熟练编写 Golang 测试用例,…

golang 中 map 的并发问题

ksedz:golang 中的 map 并发访问会报错,一般建议是使用读写锁。我有两个场景不太适合使用读写锁,求问有什么好的解决方案:1. 并发写入不同的 key,读取和写入肯定不会同时进行实际场景是每个协程维护一个会话信息,会话之间肯定不会冲突,会话内也不会并发读写。协程内的局部变量可以解决这个问题,但我想汇总协程内的信息,就需要使用 map 了。2. 大…