| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package perf
- import (
- "sync"
- "github.com/anacrolix/missinggo"
- )
- type TimedLocker struct {
- L sync.Locker
- Desc string
- }
- func (me *TimedLocker) Lock() {
- tr := NewTimer()
- me.L.Lock()
- tr.Mark(me.Desc)
- }
- func (me *TimedLocker) Unlock() {
- me.L.Unlock()
- }
- type TimedRWLocker struct {
- RWL missinggo.RWLocker
- WriteDesc string
- ReadDesc string
- }
- func (me *TimedRWLocker) Lock() {
- tr := NewTimer()
- me.RWL.Lock()
- tr.Mark(me.WriteDesc)
- }
- func (me *TimedRWLocker) Unlock() {
- me.RWL.Unlock()
- }
- func (me *TimedRWLocker) RLock() {
- tr := NewTimer()
- me.RWL.RLock()
- tr.Mark(me.ReadDesc)
- }
- func (me *TimedRWLocker) RUnlock() {
- me.RWL.RUnlock()
- }
|