背景 我是在调试MIT6.824的Raft实验遇到的这个问题,经过查阅资料,判断是由于多个goroutine资源竞争,没有加锁的问题。解决办法 就是在竞争的资源前面加锁,就可以避免出现这个问题。 rf.mu.Lock() defer rf.mu.Unlock() DPrintf("[%s]: Id %d Term %d State %s\t||\tiAppendEntries RPC"+ " to peer %d Success!\n", name, rf.me, rf.currentTerm, state2name(rf.state), i) 参考 一个奇怪的golang对切片的竞争检测问题