package safeint import "sync" /* Потокобезопасное целое */ // SafeInt -- потокобезопасное целое type SafeInt struct { val int block sync.RWMutex } // NewSafeInt -- возвращает новый *SafeInt func NewSafeInt() *SafeInt { return &SafeInt{} } // Get -- возвращает хранимое значение func (sf *SafeInt) Get() int { sf.block.RLock() defer sf.block.RUnlock() return sf.val } // Set -- устанавливает хранимое значение func (sf *SafeInt) Set(val int) { sf.block.Lock() defer sf.block.Unlock() sf.val = val }