safe_bool.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package safe_bool
  2. import "sync"
  3. /*
  4. Потокобезопасный булевый признак.
  5. */
  6. // БезопБул -- потокобезопасный булевый признак
  7. type БезопБул struct {
  8. val bool
  9. block sync.RWMutex
  10. }
  11. // НовБезопБул -- возвращает новый *SafeBool
  12. func НовБезопБул() *БезопБул {
  13. return &БезопБул{}
  14. }
  15. // Получ -- возвращает хранимое значение булевого признака
  16. func (сам *БезопБул) Получ() bool {
  17. сам.block.RLock()
  18. defer сам.block.RUnlock()
  19. return сам.val
  20. }
  21. // Уст -- устанавливает хранимое значение булевого признака
  22. func (сам *БезопБул) Уст() {
  23. сам.block.Lock()
  24. defer сам.block.Unlock()
  25. сам.val = true
  26. }
  27. // Сброс -- сбарсывает хранимое значение булевого признака
  28. func (сам *БезопБул) Сброс() {
  29. сам.block.Lock()
  30. defer сам.block.Unlock()
  31. сам.val = false
  32. }