Handle ID duplicated
mikespook opened this issue · 2 comments
mikespook commented
多个 goruntine 并发实例化client,然后递交任务会有问题,返回的hanlde可能都是相同的。worker只能收到一次处理任务请求。
具体是这样:
go func() { client.New() .... client.Do(...) }()
go func() { client.New() .... client.Do(...) }()
....多个goroutine
发现是 client中的ai计数器每次都随client.New重建导致的,我改成从一个全局计数器引用后就可以这样使用了。
不过你原来的client构架应是实例一次client,然后可以跨goroutine并发递交任务。
var @ruan Chunping
rchunping commented
嗯,我是这样改的
clieng.go:
增加
var _AI autoinc.AutoInc
func init(){
_AI = *autoinc.New(0,1)
}
func New()中
ai: &_AI, //autoinc.New(0, 1),
mikespook commented
干脆将每个 client 的 ai 移除,使用全局的 auto-inc 了。
已经做了修复。多谢!