safe_int.go 802 B

1234567891011121314151617181920212223242526272829303132
  1. package safe_int
  2. import "sync"
  3. /*
  4. Потокобезопасное целое
  5. */
  6. // БезопЦелое -- потокобезопасное целое
  7. type БезопЦелое struct {
  8. знач int
  9. блок sync.RWMutex
  10. }
  11. // НовБезопЦелое -- возвращает новый *БезопЦелое
  12. func НовБезопЦелое() *БезопЦелое {
  13. return &БезопЦелое{}
  14. }
  15. // Получ -- возвращает хранимое значение
  16. func (sf *БезопЦелое) Получ() int {
  17. sf.блок.RLock()
  18. defer sf.блок.RUnlock()
  19. return sf.знач
  20. }
  21. // Уст -- устанавливает хранимое значение
  22. func (sf *БезопЦелое) Уст(val int) {
  23. sf.блок.Lock()
  24. defer sf.блок.Unlock()
  25. sf.знач = val
  26. }