Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: mutex, synchronization, concurrency, lock

Чем Mutex отличается от RWMutex (блокировка записи vs параллельное чтение)?

Вопрос сравнивает два типа мьютексов, акцентируя внимание на оптимизации для чтения.

Короткий ответ

Mutex блокирует доступ полностью, а RWMutex позволяет множеству горутин читать одновременно, но блокирует при записи. RWMutex эффективнее, когда чтение происходит чаще записи.

Длинный ответ

Mutex (обычный):

  • Гарантирует, что только одна горутина может владеть блокировкой.

  • Подходит, если операции чтения/записи редки или равномерны.

RWMutex (чтение-запись):

  • Чтение: Множество горутин могут удерживать RLock().

  • Запись: Только одна горутина может удерживать Lock() (блокирует и чтение, и запись).

Пример:

package main

import (
	"sync"
	"time"
)

var (
	counter int
	mu      sync.RWMutex
)

func read() {
	mu.RLock() // Множество горутин могут читать
	defer mu.RUnlock()
	_ = counter // Чтение
}

func write() {
	mu.Lock() // Только одна горутина может писать
	defer mu.Unlock()
	counter++ // Запись
}

Когда использовать:

  • RWMutex: если чтение >> записи (например, кэш).

  • Mutex: если операции записи частые или код простой.

Вывод:
RWMutex снижает конкуренцию при частом чтении.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    1

  • Сложность:

    7

Навыки

  • Golang

    Golang

Ключевые слова

#mutex

#synchronization

#concurrency

#lock

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.