mirror of
https://github.com/golang/go
synced 2024-11-18 08:54:45 -07:00
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:
parent
e50dd0e974
commit
dedce99c06
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user