Advertisement
Guest User

Getting the latest sensor data

a guest
Dec 13th, 2018
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.62 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "time"
  6.     "sync"
  7. )
  8.  
  9. func get_sensor_data(s *SensorData) {
  10.     time.Sleep(1 * time.Second)
  11.     s.Store(2.1)
  12.     s.Store(2.2)
  13.     s.Store(2.3)
  14. }
  15.  
  16. type SensorData struct{
  17.     mu sync.RWMutex
  18.     last float64
  19. }
  20. func (d *SensorData) Store(data float64) {
  21.     d.mu.Lock()
  22.     defer d.mu.Unlock()
  23.  
  24.     d.last = data
  25. }
  26. func (d *SensorData) Get() float64 {
  27.     d.mu.RLock()
  28.     defer d.mu.RUnlock()
  29.  
  30.     return d.last
  31. }
  32.  
  33. func main() {
  34.     s := SensorData{}
  35.     go get_sensor_data(&s)
  36.  
  37.     for {
  38.         fmt.Println(s.last)
  39.         time.Sleep(250 * time.Millisecond)  // Do heavy "work"
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement