// Copyright (C) 2014 Jakob Borg and Contributors (see the CONTRIBUTORS file). // All rights reserved. Use of this source code is governed by an MIT-style // license that can be found in the LICENSE file. package model import ( "sync" "time" ) func deadlockDetect(mut sync.Locker, timeout time.Duration) { go func() { for { time.Sleep(timeout / 4) ok := make(chan bool, 2) go func() { mut.Lock() mut.Unlock() ok <- true }() go func() { time.Sleep(timeout) ok <- false }() if r := <-ok; !r { panic("deadlock detected") } } }() }