Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "time"
- "sync"
- )
- func get_sensor_data(s *SensorData) {
- time.Sleep(1 * time.Second)
- s.Store(2.1)
- s.Store(2.2)
- s.Store(2.3)
- }
- type SensorData struct{
- mu sync.RWMutex
- last float64
- }
- func (d *SensorData) Store(data float64) {
- d.mu.Lock()
- defer d.mu.Unlock()
- d.last = data
- }
- func (d *SensorData) Get() float64 {
- d.mu.RLock()
- defer d.mu.RUnlock()
- return d.last
- }
- func main() {
- s := SensorData{}
- go get_sensor_data(&s)
- for {
- fmt.Println(s.last)
- time.Sleep(250 * time.Millisecond) // Do heavy "work"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement