ismanevr.go 990 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package ismanevr
  2. import (
  3. "sync"
  4. )
  5. /*
  6. Потокобезопасный признак внешнего разрешения манёвра
  7. */
  8. // IsManevr -- потокобезопасный признак внешнего разрешения манёвра
  9. type IsManevr struct {
  10. val bool
  11. block sync.RWMutex
  12. }
  13. // NewIsManevr -- возвращает новый *IsManevr
  14. func NewIsManevr() *IsManevr {
  15. return &IsManevr{
  16. val: true,
  17. }
  18. }
  19. // Get -- возвращает хранимое состояние
  20. func (сам *IsManevr) Get() bool {
  21. сам.block.RLock()
  22. defer сам.block.RUnlock()
  23. return сам.val
  24. }
  25. // Set -- устанавливает хранимое состояние
  26. func (сам *IsManevr) Set() {
  27. сам.block.Lock()
  28. defer сам.block.Unlock()
  29. сам.val = true
  30. }
  31. // Сброс -- сбрасывает хранимое состояние
  32. func (сам *IsManevr) Сброс() {
  33. сам.block.Lock()
  34. defer сам.block.Unlock()
  35. сам.val = false
  36. }