aboutsummaryrefslogtreecommitdiff
path: root/var.go
diff options
context:
space:
mode:
authorMatt Joiner <anacrolix@gmail.com>2019-10-23 18:27:11 +1100
committerMatt Joiner <anacrolix@gmail.com>2019-10-23 18:27:11 +1100
commit5d3a8dccf84bcdccb5e51eec11db732eb1911277 (patch)
tree3bb008720e99e1f6e0e8d5b53a4f6e7100a49ccb /var.go
parentImprove comment on Tx.verify (diff)
downloadstm-5d3a8dccf84bcdccb5e51eec11db732eb1911277.tar.gz
stm-5d3a8dccf84bcdccb5e51eec11db732eb1911277.tar.xz
Register transaction condition with each read Var only
Diffstat (limited to 'var.go')
-rw-r--r--var.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/var.go b/var.go
index 3494352..05e86cf 100644
--- a/var.go
+++ b/var.go
@@ -4,12 +4,16 @@ import "sync"
// A Var holds an STM variable.
type Var struct {
- val interface{}
- version uint64
- mu sync.Mutex
+ val interface{}
+ version uint64
+ mu sync.Mutex
+ watchers map[*Tx]struct{}
}
// NewVar returns a new STM variable.
func NewVar(val interface{}) *Var {
- return &Var{val: val}
+ return &Var{
+ val: val,
+ watchers: make(map[*Tx]struct{}),
+ }
}