os: convert Process.isdone to atomic type

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>
This commit is contained in:
cuiweixie 2022-08-27 10:13:50 +08:00 committed by Gopher Robot
parent e50dd0e974
commit dedce99c06

View 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