由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - golang 一个thread safe singleton问题
相关主题
请问static variable init的问题?golang虽然不会一统江湖,但是,干掉python ,ruby是迟早的事情
thread-safe singleton implementationgo也是三种paradigm混合的语言
class的Init()和Reset()需要考虑thread-safe吗?用golang实现了map,大牛给看看?
python下的expectgolang的method是后来加的?
multithread app的design要注意哪些问题?怎样能把go写的稍微漂亮一点?
一道 memset in C++的题为什么大家不喜欢golang的switch?
一个multithread的问题(是不是有人觉的很简单?)最近学了一下 Go
判断Python程序员水平的一个试题玩go还是要玩OO
相关话题的讨论汇总
话题: golang话题: thread话题: safe话题: singleton话题: init
进入Programming版参与讨论
1 (共1页)
s********k
发帖数: 6180
1
比如需要初始化client,保证thread safe singleton, 看到很多资料都用once.Do(
func(){})这样来做,但是同事看到如果在package用init,If multiple packages
import a package P, P will be initialized only once. 这里的init是不是也是
thread safe?
d****n
发帖数: 1637
2
not thread safe.
init(s) was called by the order of dependency tree.
if in same folder level, called alphabetical order.
e.g. if two init functions have concurrent writings to same map, then god
bless you.
BTW: you can avoid such thing happen by using sync.Mutex or concurrent map
in golang 1.9+
d****n
发帖数: 1637
3
you can check it by using golang's race detector.
$ go test -race mypkg // to test the package
$ go run -race mysrc.go // to run the source file
$ go build -race mycmd // to build the command
$ go install -race mypkg // to install the package
s********k
发帖数: 6180
4
Thanks, 用sync.Once也可以吧

【在 d****n 的大作中提到】
: you can check it by using golang's race detector.
: $ go test -race mypkg // to test the package
: $ go run -race mysrc.go // to run the source file
: $ go build -race mycmd // to build the command
: $ go install -race mypkg // to install the package

1 (共1页)
进入Programming版参与讨论
相关主题
玩go还是要玩OOmultithread app的design要注意哪些问题?
go里面channel和wait group用法比较一道 memset in C++的题
Golang的promise lib哪个好?一个multithread的问题(是不是有人觉的很简单?)
How to initialize object in constructor?判断Python程序员水平的一个试题
请问static variable init的问题?golang虽然不会一统江湖,但是,干掉python ,ruby是迟早的事情
thread-safe singleton implementationgo也是三种paradigm混合的语言
class的Init()和Reset()需要考虑thread-safe吗?用golang实现了map,大牛给看看?
python下的expectgolang的method是后来加的?
相关话题的讨论汇总
话题: golang话题: thread话题: safe话题: singleton话题: init