我试图弄清楚是什么让我的程序挂起,我的大部分锁不应该超过 200 毫秒。(实际上要少得多!)
我想创建两个新函数 (Lock()和Unlock()),以便 Lock 将有一个计时器,如果 Lock 已被持有超过 200 毫秒,该计时器将发生恐慌。
这是我目前的尝试,但它不起作用,有什么提示吗?
type ShardKV struct {
lockChan chan bool
}
func (kv *App) lock(reason string) {
kv.mu.Lock()
f := func () {
fmt.Println("PANIC: ms passed")
select {
case <- kv.lockChan:
//
default:
panic("PANIC: " + reason)
}
}
time.AfterFunc(time.Second * 10, f)
}
func (kv *App) unlock(reason string) {
kv.lockChan <- true
kv.mu.Unlock()
}
森栏
隔江千里
白衣非少年
相关分类