plugin weixin change sync rwmutex

This commit is contained in:
李子铭 2024-07-18 18:29:46 +08:00
parent a30bae8f66
commit 4d53cc5afe
1 changed files with 11 additions and 13 deletions

View File

@ -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) {