多个进程(process)、线程(threading)或协程(routine)存在对同一个资源访问顺序敏感(时间上的错误)
// WithLock 进入临界区,同闭包方式访问临界区上下文 func WithLock(l *sync.Mutex, handler func()) { l.Lock() defer l.Unlock() handler() } // WithLock 读锁, 进入临界区,同闭包方式访问临界区上下文 func WithRLock(l *sync.RWMutex, handler func()) { l.RLock() defer l.RUnlock() handler() } // WithLock 写锁, 进入临界区,同闭包方式访问临界区上下文 func WithWLock(l *sync.RWMutex, handler func()) { l.Lock() defer l.RUnlock() handler() }