github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/wgmutex/wg_mutex.go (about) 1 package wgmutex 2 3 import "sync" 4 5 type WgMutex struct { 6 *sync.RWMutex 7 wg *sync.WaitGroup 8 } 9 10 func New(m *sync.RWMutex, wg *sync.WaitGroup) *WgMutex { 11 return &WgMutex{ 12 RWMutex: m, 13 wg: wg, 14 } 15 } 16 17 func (m *WgMutex) Lock() { 18 m.RWMutex.Lock() 19 m.wg.Wait() 20 } 21 22 func (m *WgMutex) RLock() { 23 m.RWMutex.RLock() 24 m.wg.Wait() 25 }