safe_bool.go 1.1 KB

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