]> Cypherpunks repositories - gostls13.git/commitdiff
os: convert Process.isdone to atomic type
authorcuiweixie <cuiweixie@gmail.com>
Sat, 27 Aug 2022 02:13:50 +0000 (10:13 +0800)
committerGopher Robot <gobot@golang.org>
Thu, 15 Sep 2022 21:11:27 +0000 (21:11 +0000)
Change-Id: Ia3213d22678be0d56bf4f34dfe458441f7f5da97
Reviewed-on: https://go-review.googlesource.com/c/go/+/426077
Run-TryBot: Michael Pratt <mpratt@google.com>
Run-TryBot: Jenny Rakoczy <jenny@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Jenny Rakoczy <jenny@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Jenny Rakoczy <jenny@golang.org>

src/os/exec.go

index 9eb3166ecb764e6e9d282d9c6ff9e32d2ef28749..d01ca592baefedbacb9bf8940272e3e57c29925a 100644 (file)
@@ -21,7 +21,7 @@ var ErrProcessDone = errors.New("os: process already finished")
 type Process struct {
        Pid    int
        handle uintptr      // handle is accessed atomically on Windows
-       isdone uint32       // process has been successfully waited on, non zero if true
+       isdone atomic.Bool  // process has been successfully waited on
        sigMu  sync.RWMutex // avoid race between wait and signal
 }
 
@@ -32,11 +32,11 @@ func newProcess(pid int, handle uintptr) *Process {
 }
 
 func (p *Process) setDone() {
-       atomic.StoreUint32(&p.isdone, 1)
+       p.isdone.Store(true)
 }
 
 func (p *Process) done() bool {
-       return atomic.LoadUint32(&p.isdone) > 0
+       return p.isdone.Load()
 }
 
 // ProcAttr holds the attributes that will be applied to a new process