sync.Mutex обеспечивает эксклюзивный доступ к общему ресурсу, то есть только одна горутина может владеть блокировкой в любой момент времени. Это самый простой примитив синхронизации для защиты критических секций.
sync.RWMutex (Read-Write Mutex) позволяет нескольким одновременным читателям ИЛИ одному эксклюзивному писателю, но никогда не обоим одновременно.
Mutex использует Lock() и Unlock() для всех операций; RWMutex использует Lock()/Unlock() для записи и RLock()/RUnlock() для чтенияMutex блокирует все остальные горутины; RWMutex позволяет нескольким читателям работать параллельноRWMutex отлично работает при большом количестве чтений, убирая лишние блокировки между читателямиMutex проще; RWMutex добавляет накладные расходы на управление состояниями чтения/записиИспользуй sync.Mutex когда:
Используй sync.RWMutex когда:
В системе кэша, где 90% операций — это чтения и 10% — записи, RWMutex не даёт читателям блокировать друг друга, что резко улучшает пропускную способность по сравнению с Mutex.
sync.RWMutex позволяет нескольким goroutine одновременно удерживать write locks, пока не активны read locks.
Новый — ещё не проверен сообществом
Вы