safe_bool.go 922 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // package safe_bool -- потокобезопасный булевый признак
  2. package safe_bool
  3. import (
  4. "sync"
  5. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  6. )
  7. // safeBool -- потокобезопасный булевый признак
  8. type safeBool struct {
  9. sync.RWMutex
  10. val bool
  11. }
  12. // NewSafeBool -- возвращает новый потокобезопасный булевый признак
  13. func NewSafeBool() ISafeBool {
  14. sf := &safeBool{}
  15. return sf
  16. }
  17. // Get -- возвращает хранимый булевый признак
  18. func (sf *safeBool) Get() bool {
  19. sf.RLock()
  20. defer sf.RUnlock()
  21. return sf.val
  22. }
  23. // Set -- устанавливает булевый признак
  24. func (sf *safeBool) Set() {
  25. sf.Lock()
  26. defer sf.Unlock()
  27. sf.val = true
  28. }
  29. // Reset -- сбрасывает булевый признак
  30. func (sf *safeBool) Reset() {
  31. sf.Lock()
  32. defer sf.Unlock()
  33. sf.val = false
  34. }