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