Reader/writer mutual exclusion lock applied to certain resources.
go get -u github.com/tracerun/locker
// create an instance
lock := New()
// read lock resource
release := lock.ReadLock("resource1")
...
// release the read lock
relaase()
// write lock resource
release := lock.WriteLock("resource2")
...
// release the write lock
relaase()