From 5d3a8dccf84bcdccb5e51eec11db732eb1911277 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 23 Oct 2019 18:27:11 +1100 Subject: Register transaction condition with each read Var only --- var.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'var.go') 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{}), + } } -- cgit v1.2.3