summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-atomics/state.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-09-26 19:23:41 +0000
committerLibravatar GitHub <noreply@github.com>2024-09-26 19:23:41 +0000
commitf3e2d36d6455e6d16aba833bdf64806377c8178f (patch)
tree8a1e87f349205e8073b72df6e5349c553db80a17 /vendor/codeberg.org/gruf/go-atomics/state.go
parent[chore] Fix some contrast issues in themes; performance tweaks (#3358) (diff)
downloadgotosocial-f3e2d36d6455e6d16aba833bdf64806377c8178f.tar.xz
[chore] update go-sched pkg (#3357)
* update go-sched to v1.2.4 which removes some now unused dependencies * whoops, remove test output
Diffstat (limited to 'vendor/codeberg.org/gruf/go-atomics/state.go')
-rw-r--r--vendor/codeberg.org/gruf/go-atomics/state.go58
1 files changed, 0 insertions, 58 deletions
diff --git a/vendor/codeberg.org/gruf/go-atomics/state.go b/vendor/codeberg.org/gruf/go-atomics/state.go
deleted file mode 100644
index 21892f378..000000000
--- a/vendor/codeberg.org/gruf/go-atomics/state.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package atomics
-
-import "sync"
-
-// State provides user-friendly means of performing atomic-like
-// operations on a uint32 state, and allowing callbacks on successful
-// state change. This is a bit of a misnomer being where it is, as it
-// actually uses a mutex under-the-hood.
-type State struct {
- mutex sync.Mutex
- state uint32
-}
-
-// Store will update State value safely within mutex lock.
-func (st *State) Store(val uint32) {
- st.mutex.Lock()
- st.state = val
- st.mutex.Unlock()
-}
-
-// Load will get value of State safely within mutex lock.
-func (st *State) Load() uint32 {
- st.mutex.Lock()
- state := st.state
- st.mutex.Unlock()
- return state
-}
-
-// WithLock performs fn within State mutex lock, useful if you want
-// to just use State's mutex for locking instead of creating another.
-func (st *State) WithLock(fn func()) {
- st.mutex.Lock()
- defer st.mutex.Unlock()
- fn()
-}
-
-// Update performs fn within State mutex lock, with the current state
-// value provided as an argument, and return value used to update state.
-func (st *State) Update(fn func(state uint32) uint32) {
- st.mutex.Lock()
- defer st.mutex.Unlock()
- st.state = fn(st.state)
-}
-
-// CAS performs a compare-and-swap on State, calling fn on success. Success value is also returned.
-func (st *State) CAS(cmp, swp uint32, fn func()) (ok bool) {
- // Acquire lock
- st.mutex.Lock()
- defer st.mutex.Unlock()
-
- // Perform CAS operation, fn() on success
- if ok = (st.state == cmp); ok {
- st.state = swp
- fn()
- }
-
- return
-}