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