safestring.go 677 B

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