code: func (l *FileLock) SharedLock() error {
  	return syscall.Flock(l.fd, syscall.LOCK_SH)
  }
docs: // SharedLock takes a co-operative (shared) lock on.
  // This is idempotent when the Lock already represents a shared lock,
  // and demotes an exclusive lock to shared atomically.
  // It will block if an exclusive lock is already held.