safe_string.go 1.1 KB

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