我正在用Go编写哲学家用餐解决方案。我的解决方案很简单:检查两个fork是否可用。如果是这样,请同时选择两者。如果不是,请保留两者。但是,我遇到了一个奇怪的并发错误,即使在明确设置为false之后,fork的可用性仍然是true。我的Fork声明如下:typeForkstruct{musync.Mutexavailbool}func(f*Fork)PickUp()bool{f.mu.Lock()iff.avail==false{f.mu.Unlock()returnfalse}f.avail=falsefmt.Println("setfalse")f.mu.Unlock()return