if GOOS == "darwin" || GOOS == "ios" {
// Make sure pendingPreemptSignals is correct when an M exits.
// For #41702.
- if atomic.Load(&mp.signalPending) != 0 {
+ if mp.signalPending.Load() != 0 {
pendingPreemptSignals.Add(-1)
}
}
// Acknowledge the preemption.
atomic.Xadd(&gp.m.preemptGen, 1)
- atomic.Store(&gp.m.signalPending, 0)
+ gp.m.signalPending.Store(0)
if GOOS == "darwin" || GOOS == "ios" {
pendingPreemptSignals.Add(-1)
execLock.rlock()
}
- if atomic.Cas(&mp.signalPending, 0, 1) {
+ if mp.signalPending.CompareAndSwap(0, 1) {
if GOOS == "darwin" || GOOS == "ios" {
pendingPreemptSignals.Add(1)
}