/
githubmirror
/
GoFrame
Обзор
Документация
Войти
/
githubmirror
/
GoFrame
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
internal/mutex/mutex.go
59 строк
1 KB
John Guo
feature/v2.2.0 (#2154)
26 сен 2022, 17:11
Не верифицирован
26 сен 2022, 17:11
141ca62
Код
Авторство
О чём код?
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, // You can obtain one at https://github.com/gogf/gf. // Package mutex provides switch of concurrent safe feature for sync.Mutex. package mutex import ( "sync" ) // Mutex is a sync.Mutex with a switch for concurrent safe feature. type Mutex struct { // Underlying mutex. mutex *sync.Mutex } // New creates and returns a new *Mutex. // The parameter `safe` is used to specify whether using this mutex in concurrent safety, // which is false in default. func New(safe ...bool) *Mutex { mu := Create(safe...) return &mu } // Create creates and returns a new Mutex object. // The parameter `safe` is used to specify whether using this mutex in concurrent safety, // which is false in default. func Create(safe ...bool) Mutex { if len(safe) > 0 && safe[0] { return Mutex{ mutex: new(sync.Mutex), } } return Mutex{} } // IsSafe checks and returns whether current mutex is in concurrent-safe usage. func (mu *Mutex) IsSafe() bool { return mu.mutex != nil } // Lock locks mutex for writing. // It does nothing if it is not in concurrent-safe usage. func (mu *Mutex) Lock() { if mu.mutex != nil { mu.mutex.Lock() } } // Unlock unlocks mutex for writing. // It does nothing if it is not in concurrent-safe usage. func (mu *Mutex) Unlock() { if mu.mutex != nil { mu.mutex.Unlock() } }