Go问答 sync.Mutex 中的 state 为什么用 int32 而不用 uint32

spf · 2020年07月15日 · 最后由 spf 回复于 2020年07月16日 · 537 次阅读

如题:用有符号数是有什么特殊用途吗?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

应该是没有特殊用途的吧,这个 int32 是按位使用的

kevin 回复

嗯嗯 虽然存储结果上没什么区别,但搞有符号的总觉得是不是有什么特殊想法没注意到。。 可能是想多了

3楼 已删除

有符号数是因为 state 在代码里涉及到算数运算,如果出现穿过 0 的情况,有符号数不会溢出,错误处理更容易一些(https://github.com/golang/go/blob/master/src/sync/mutex.go#L158

h12 回复

嗯嗯应该是有这方面考虑 不过我没发现哪种情境下 state 会穿过 0。 好像是不会出现

spf 关闭了讨论 07月20日 19:22
spf 重新开启了讨论 07月20日 19:22
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册