safe_bool.go 1.2 KB

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