Стандартная библиотека Go предоставляет два основных типа мьютексов в пакете sync
:
sync.Mutex
: Базовый мьютекс, обеспечивающий взаимоисключающую блокировку. Может быть в двух состояниях: заблокирован или разблокирован. Только одна горутина может удерживать блокировку в любой момент времени.sync.RWMutex
: Мьютекс для чтения/записи. Позволяет множеству горутин одновременно читать данные (получать RLock), но только одной горутине писать данные (получать Lock). Запись блокирует все операции (как чтение, так и запись).Основные методы sync.Mutex
:
Метод | Описание |
---|---|
Lock() | Блокирует мьютекс. Если мьютекс уже заблокирован, вызывающая горутина блокируется до его освобождения. |
Unlock() | Разблокирует мьютекс. Паника, если мьютекс не был заблокирован вызывающей горутиной. |
Основные методы sync.RWMutex
:
Метод | Описание |
---|---|
Lock() | Блокирует мьютекс для записи. Блокирует все операции чтения и записи. |
Unlock() | Разблокирует мьютекс для записи. Паника, если мьютекс не был заблокирован для записи. |
RLock() | Блокирует мьютекс для чтения. Не блокирует другие опе |
Стандартная библиотека Go предоставляет два основных типа мьютексов в пакете sync
:
sync.Mutex
: Базовый мьютекс, обеспечивающий взаимоисключающую блокировку. Может быть в двух состояниях: заблокирован или разблокирован. Только одна горутина может удерживать блокировку в любой момент времени.sync.RWMutex
: Мьютекс для чтения/записи. Позволяет множеству горутин одновременно читать данные (получать RLock), но только одной горутине писать данные (получать Lock). Запись блокирует все операции (как чтение, так и запись).Основные методы sync.Mutex
:
Метод | Описание |
---|---|
Lock() | Блокирует мьютекс. Если мьютекс уже заблокирован, вызывающая горутина блокируется до его освобождения. |
Unlock() | Разблокирует мьютекс. Паника, если мьютекс не был заблокирован вызывающей горутиной. |
Основные методы sync.RWMutex
:
Метод | Описание |
---|---|
Lock() | Блокирует мьютекс для записи. Блокирует все операции чтения и записи. |
Unlock() | Разблокирует мьютекс для записи. Паника, если мьютекс не был заблокирован для записи. |
RLock() | Блокирует мьютекс для чтения. Не блокирует другие опе |
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.