a41f938cec
As we have seen, dependencies version can prevent the build. We should user lock versions on dependencies that we know work: * Packages are vendored * Add Godep support * Added addtional install step in readme * Fix travis build error
48 lignes
662 o
Go
48 lignes
662 o
Go
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.Stop(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.Stop(me.WriteDesc)
|
|
}
|
|
|
|
func (me *TimedRWLocker) Unlock() {
|
|
me.RWL.Unlock()
|
|
}
|
|
|
|
func (me *TimedRWLocker) RLock() {
|
|
tr := NewTimer()
|
|
me.RWL.RLock()
|
|
tr.Stop(me.ReadDesc)
|
|
}
|
|
|
|
func (me *TimedRWLocker) RUnlock() {
|
|
me.RWL.RUnlock()
|
|
}
|