package custom_rwmutex import "sync" type CustomRwMutex struct { mu *sync.RWMutex } func NewCustomRwMutex() *CustomRwMutex { return &CustomRwMutex{ mu: &sync.RWMutex{}, } } func (rwMu *CustomRwMutex) WriteHandler(fn func() error) error { rwMu.mu.Lock() defer rwMu.mu.Unlock() if err := fn(); err != nil { return err } return nil } func (rwMu *CustomRwMutex) ReadHandler(fn func() error) error { rwMu.mu.RLock() defer rwMu.mu.RUnlock() if err := fn(); err != nil { return err } return nil }