1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/go-locks-distlock

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Go-Locks

Распределённый компонент блокировок для Golang.

Более подробно о примерах использования можно узнать на странице examples.

Список драйверов

Если вы хотите внести свой вклад в незавершённый код драйвера, пожалуйста, свяжитесь со мной через ISSUES или по электронной почте 249008728@qq.com.

Драйвер Степень готовности кода Степень готовности тестов Зависимость пакетов Инструкция по использованию
redis 100% 100% letsfire/redigo Подробнее см. README.md
pgsql 100% 100% lib/pq Подробнее см. README.md
etcd Не завершён Не тестирован etcd/client Подробнее см. README.md
etcdv3 Не завершён Не тестирован etcd/clientv3 Подробнее см. README.md

Описание методов

Конфигурацию параметров mutex.OptFunc и использование возвращаемого значения блокировки см. в mutex/README.md:

  • NewMutex(name string, optFuncs ...mutex.OptFunc) (*mutex.Mutex, error) — создаёт блокировку взаимного исключения. Если имя уже используется для создания блокировки чтения-записи, возвращается ошибка. Этот метод работает в режиме одиночного экземпляра.
  • NewRWMutex(name string, optFuncs ...mutex.OptFunc) (*mutex.RWMutex, error) — создаёт блокировку чтения-записи. Если имя уже используется для создания взаимной блокировки, возвращается ошибка. Этот метод также работает в режиме одиночного экземпляра.

Примечания

  • Не реентерабельно (если у вас есть строгие требования к этому, пожалуйста, предоставьте обратную связь через ISSUES).
  • Несправедливая блокировка (Golang local lock sync.Locker is also unfair lock, if you have requirements or suggestions, please provide feedback through ISSUES).
  • Есть два типа блокировок взаимного исключения mutex и блокировки чтения-записи rwmutex, подробности о поддержке см. в соответствующих README.md для каждого драйвера.
  • Хотя есть полный набор модульных тестов, они ещё не прошли проверку в реальных проектах, поэтому рекомендуется использовать их с осторожностью в производственной среде. В случае возникновения проблем, пожалуйста, сообщайте о них через ISSUES, чтобы совместно улучшить проект.

Структура проекта

  • Основной уровень вызова — distlock.go, который затем вызывает mutex.go и driver.go.
  • distlock.go предоставляет фабричный класс для создания блокировок, работающий в режиме одиночного экземпляра (существует только одна блокировка с одинаковым именем, и существует только один тип блокировки).
  • mutex.go реализует различные типы блокировок и приветствует вклад других типов блокировок от участников. Подробнее см. в разделе mutex/README.md.
  • driver.go определяет интерфейс для драйверов и приветствует вклад от участников в другие драйверы. Подробнее см. раздел driver/README.md.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Универсальный компонент распределённой блокировки Golang, поддерживает Redis и Postgres. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/go-locks-distlock.git
git@api.gitlife.ru:oschina-mirror/go-locks-distlock.git
oschina-mirror
go-locks-distlock
go-locks-distlock
master