package safe_int import ( "sync" "wartank/pkg/types" ) /* Потокобезопасное целое */ // БезопЦелое -- потокобезопасное целое type БезопЦелое struct { знач int блок sync.RWMutex } // НовБезопЦелое -- возвращает новый *БезопЦелое func НовБезопЦелое() *БезопЦелое { сам := &БезопЦелое{} _ = types.ИСбрасыватель(сам) return сам } // Сброс -- сбрасывает в исходное значение func (сам *БезопЦелое) Сброс() { сам.блок.Lock() defer сам.блок.Unlock() сам.знач = 0 } // Получ -- возвращает хранимое значение func (сам *БезопЦелое) Получ() int { сам.блок.RLock() defer сам.блок.RUnlock() return сам.знач } // Уст -- устанавливает хранимое значение func (сам *БезопЦелое) Уст(val int) { сам.блок.Lock() defer сам.блок.Unlock() сам.знач = val }