30 lines
353 B
Go
30 lines
353 B
Go
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package utils
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
type AtomicMax struct {
|
|
val int64
|
|
mu sync.Mutex
|
|
}
|
|
|
|
func NewAtomicMax() *AtomicMax {
|
|
return &AtomicMax{}
|
|
}
|
|
|
|
func (a *AtomicMax) SetToGreater(newValue int64) bool {
|
|
a.mu.Lock()
|
|
defer a.mu.Unlock()
|
|
|
|
if a.val > newValue {
|
|
return false
|
|
}
|
|
|
|
a.val = newValue
|
|
|
|
return true
|
|
}
|