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