func()

in linux/handler.go [91:115]


func (h *KeyHandler) lockKey(keyID string) *sync.Mutex {
	var ret *sync.Mutex
	for stop := false; !stop; {
		h.lock.Lock()
		lock := h.inFlightLocks[keyID]
		if lock == nil {
			lock = new(sync.Mutex)
			h.inFlightLocks[keyID] = lock
		}
		h.lock.Unlock()

		ret = lock
		ret.Lock()

		h.lock.Lock()
		lock = h.inFlightLocks[keyID]
		if ret == lock {
			stop = true
		} else {
			ret.Unlock()
		}
		h.lock.Unlock()
	}
	return ret
}