diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-runners/pointer.go')
| -rw-r--r-- | vendor/codeberg.org/gruf/go-runners/pointer.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-runners/pointer.go b/vendor/codeberg.org/gruf/go-runners/pointer.go new file mode 100644 index 000000000..cc139309f --- /dev/null +++ b/vendor/codeberg.org/gruf/go-runners/pointer.go @@ -0,0 +1,22 @@ +package runners + +import ( + "sync/atomic" + "unsafe" +) + +// atomic_pointer wraps an unsafe.Pointer with +// receiver methods for their atomic counterparts. +type atomic_pointer struct{ p unsafe.Pointer } + +func (p *atomic_pointer) Load() unsafe.Pointer { + return atomic.LoadPointer(&p.p) +} + +func (p *atomic_pointer) Store(ptr unsafe.Pointer) { + atomic.StorePointer(&p.p, ptr) +} + +func (p *atomic_pointer) CAS(old, new unsafe.Pointer) bool { + return atomic.CompareAndSwapPointer(&p.p, old, new) +} |
