的确,您可以sync.RWMutex在需要时使用sync.Mutex.我认为两者都存在,因为在很多情况下 async.Mutex就足够了(您不需要读写级别锁定),并且实现sync.Mutex更简单:需要更少的内存并且很可能更快。sync.Mutex只有 8 个字节:type Mutex struct { state int32 sema uint32}虽然sync.RWMutex是 8 + 16 = 24 字节(它包括一个sync.Mutex):type RWMutex struct { w Mutex // held if there are pending writers writerSem uint32 // semaphore for writers to wait for completing readers readerSem uint32 // semaphore for readers to wait for completing writers readerCount int32 // number of pending readers readerWait int32 // number of departing readers}是的,您可以说 8 或 24 个字节无关紧要。只要您只有几个互斥锁,它就不会。但是将互斥锁放入它应该保护的结构中(嵌入或常规的命名字段)并不少见。现在,如果你有这些结构值的一部分,甚至可能有数千个,那么是的,它会产生明显的不同。此外,如果您只需要一个互斥量,sync.Mutex则可以减少滥用它的机会(您不会意外调用,RLock()因为它没有该方法)。