plugin weixin change sync rwmutex
This commit is contained in:
parent
a30bae8f66
commit
4d53cc5afe
|
@ -10,25 +10,23 @@ import (
|
|||
"sync"
|
||||
)
|
||||
|
||||
var instance *cashcoupons.CouponApiService
|
||||
var once sync.Once
|
||||
var onceError error
|
||||
var onceErrorMutex sync.Mutex
|
||||
var errorMutex sync.RWMutex
|
||||
|
||||
func getSrv(ctx context.Context, config *Config) (*cashcoupons.CouponApiService, error) {
|
||||
onceErrorMutex.Lock()
|
||||
defer onceErrorMutex.Unlock()
|
||||
var instanceMap = make(map[string]*cashcoupons.CouponApiService)
|
||||
var errorMap = make(map[string]error)
|
||||
|
||||
if onceError != nil {
|
||||
instance = nil
|
||||
onceError = nil
|
||||
func getSrv(ctx context.Context, c *Config) (*cashcoupons.CouponApiService, error) {
|
||||
errorMutex.Lock()
|
||||
defer errorMutex.Unlock()
|
||||
if errorMap[c.MchID] != nil {
|
||||
instanceMap[c.MchID] = nil
|
||||
errorMap[c.MchID] = nil
|
||||
}
|
||||
|
||||
once.Do(func() {
|
||||
instance, onceError = newInstance(ctx, config)
|
||||
instanceMap[c.MchID], errorMap[c.MchID] = newInstance(ctx, c)
|
||||
})
|
||||
|
||||
return instance, onceError
|
||||
return instanceMap[c.MchID], errorMap[c.MchID]
|
||||
}
|
||||
|
||||
func newInstance(ctx context.Context, config *Config) (*cashcoupons.CouponApiService, error) {
|
||||
|
|
Loading…
Reference in New Issue