package safe_string

import "sync"

/*
	Потокобезопасная строка
*/

// БезопСтрока -- потокобезопасная строка
type БезопСтрока struct {
	знач string
	блок sync.RWMutex
}

// НовБезопСтрока -- возвращает новый *SafeString
func НовБезопСтрока() *БезопСтрока {
	return &БезопСтрока{}
}

// Получ -- возвращает хранимое значение
func (сам *БезопСтрока) Получ() string {
	сам.блок.RLock()
	defer сам.блок.RUnlock()
	return сам.знач
}

// Уст -- устанавливает хранимое значение
func (сам *БезопСтрока) Уст(знач string) {
	сам.блок.Lock()
	defer сам.блок.Unlock()
	сам.знач = знач
}
