safe_string.go 864 B

1234567891011121314151617181920212223242526272829303132
  1. package safe_string
  2. import "sync"
  3. /*
  4. Потокобезопасная строка
  5. */
  6. // БезопСтрока -- потокобезопасная строка
  7. type БезопСтрока struct {
  8. знач string
  9. блок sync.RWMutex
  10. }
  11. // НовБезопСтрока -- возвращает новый *SafeString
  12. func НовБезопСтрока() *БезопСтрока {
  13. return &БезопСтрока{}
  14. }
  15. // Получ -- возвращает хранимое значение
  16. func (сам *БезопСтрока) Получ() string {
  17. сам.блок.RLock()
  18. defer сам.блок.RUnlock()
  19. return сам.знач
  20. }
  21. // Уст -- устанавливает хранимое значение
  22. func (сам *БезопСтрока) Уст(знач string) {
  23. сам.блок.Lock()
  24. defer сам.блок.Unlock()
  25. сам.знач = знач
  26. }