| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package safebool
- import "sync"
- /*
- Потокобезопасный булевый признак.
- */
- // SafeBool -- потокобезопасный булевый признак
- type SafeBool struct {
- val bool
- block sync.RWMutex
- }
- // NewSafeBool -- возвращает новый *SafeBool
- func NewSafeBool() *SafeBool {
- return &SafeBool{}
- }
- // Get -- возвращает хранимое значение булевого признака
- func (sf *SafeBool) Get() bool {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.val
- }
- // Set -- устанавливает хранимое значение булевого признака
- func (sf *SafeBool) Set() {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val = true
- }
- // Reset -- сбарсывает хранимое значение булевого признака
- func (sf *SafeBool) Reset() {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val = false
- }
|