]> Cypherpunks repositories - gostls13.git/commitdiff
sync: use atomic.Store in Once.Do
authorDmitriy Vyukov <dvyukov@google.com>
Mon, 14 May 2012 15:27:29 +0000 (19:27 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Mon, 14 May 2012 15:27:29 +0000 (19:27 +0400)
No perf/semantic changes, merely improves code health.
There were several questions as to why Once.Do uses
atomic.CompareAndSwap to do a store.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6208057

src/pkg/sync/once.go

index 04b714a3e74b883a72e7d2fcc0ef3736f08fbe5e..1699e86a9eb396274325310c91e91f1f019be531 100644 (file)
@@ -38,6 +38,6 @@ func (o *Once) Do(f func()) {
        defer o.m.Unlock()
        if o.done == 0 {
                f()
-               atomic.CompareAndSwapUint32(&o.done, 0, 1)
+               atomic.StoreUint32(&o.done, 1)
        }
 }