私のプログラムがハングアップしていることを理解しようとしていますが、ロックのほとんどは200ミリ秒以上保持してはいけません。Golang:ミューテックスロックが長すぎるとパニックになった
2つの新しい関数(Lock()
とUnlock()
)を作成して、ロックが200ミリ秒以上ロックされているとパニックするタイマーを持つようにしたいと思います。
これは私の現在の試みですが、ヒントはありません。
func (kv *App) lock(reason string) {
kv.mu.Lock()
select {
case <- kv.lockChan:
//
case <-time.After(time.Second * 10):
panic("PANIC: " + reason)
}
}
どのようにチャンネルを作成しますか?このコードを動作させるにはバッファリングする必要があります – creker
あなたのコードは10秒間待っていますが、あなたは200ミリ秒間を意図しています。あなたのコードがうまくいかない理由を述べなかったのですが、これが理由でしょうか? –