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 }