diff options
author | Matt Joiner <anacrolix@gmail.com> | 2019-11-04 15:52:42 +1100 |
---|---|---|
committer | Matt Joiner <anacrolix@gmail.com> | 2019-11-04 15:52:42 +1100 |
commit | bbcb2aadd77d362849993806e5c3900b11a1502e (patch) | |
tree | 0c3969c1cb031acdf1a23975b850934d130da87d /var.go | |
parent | Use atomic pointers for Var data (diff) | |
download | stm-bbcb2aadd77d362849993806e5c3900b11a1502e.tar.gz stm-bbcb2aadd77d362849993806e5c3900b11a1502e.tar.xz |
Remove global lock
Diffstat (limited to 'var.go')
-rw-r--r-- | var.go | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1,6 +1,7 @@ package stm import ( + "sync" "sync/atomic" "unsafe" ) @@ -8,7 +9,8 @@ import ( // Holds an STM variable. type Var struct { state *varSnapshot - watchers map[*Tx]struct{} + watchers sync.Map + mu sync.Mutex } func (v *Var) addr() *unsafe.Pointer { @@ -35,6 +37,5 @@ func NewVar(val interface{}) *Var { state: &varSnapshot{ val: val, }, - watchers: make(map[*Tx]struct{}), } } |