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