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