atomicbitops

package
v0.0.0-...-6a88ae7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2021 License: Apache-2.0, MIT Imports: 2 Imported by: 0

Documentation

Overview

Package atomicbitops provides extensions to the sync/atomic package.

All read-modify-write operations implemented by this package have acquire-release memory ordering (like sync/atomic).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AndUint32

func AndUint32(addr *uint32, val uint32)

AndUint32 atomically applies bitwise AND operation to *addr with val.

func AndUint64

func AndUint64(addr *uint64, val uint64)

AndUint64 atomically applies bitwise AND operation to *addr with val.

func CompareAndSwapUint32

func CompareAndSwapUint32(addr *uint32, old, new uint32) uint32

CompareAndSwapUint32 is like sync/atomic.CompareAndSwapUint32, but returns the value previously stored at addr.

func CompareAndSwapUint64

func CompareAndSwapUint64(addr *uint64, old, new uint64) uint64

CompareAndSwapUint64 is like sync/atomic.CompareAndSwapUint64, but returns the value previously stored at addr.

func OrUint32

func OrUint32(addr *uint32, val uint32)

OrUint32 atomically applies bitwise OR operation to *addr with val.

func OrUint64

func OrUint64(addr *uint64, val uint64)

OrUint64 atomically applies bitwise OR operation to *addr with val.

func XorUint32

func XorUint32(addr *uint32, val uint32)

XorUint32 atomically applies bitwise XOR operation to *addr with val.

func XorUint64

func XorUint64(addr *uint64, val uint64)

XorUint64 atomically applies bitwise XOR operation to *addr with val.

Types

type AlignedAtomicInt64

type AlignedAtomicInt64 struct {
	// contains filtered or unexported fields
}

AlignedAtomicInt64 is an atomic int64 that is guaranteed to be 64-bit aligned, even on 32-bit systems. On most architectures, it's just a regular int64.

See aligned_unsafe.go in this directory for justification.

+stateify savable

func (*AlignedAtomicInt64) Add

func (aa *AlignedAtomicInt64) Add(v int64) int64

Add is analagous to atomic.AddInt64.

func (*AlignedAtomicInt64) Load

func (aa *AlignedAtomicInt64) Load() int64

Load is analagous to atomic.LoadInt64.

func (*AlignedAtomicInt64) StateFields

func (aa *AlignedAtomicInt64) StateFields() []string

func (*AlignedAtomicInt64) StateLoad

func (aa *AlignedAtomicInt64) StateLoad(stateSourceObject state.Source)

+checklocksignore

func (*AlignedAtomicInt64) StateSave

func (aa *AlignedAtomicInt64) StateSave(stateSinkObject state.Sink)

+checklocksignore

func (*AlignedAtomicInt64) StateTypeName

func (aa *AlignedAtomicInt64) StateTypeName() string

func (*AlignedAtomicInt64) Store

func (aa *AlignedAtomicInt64) Store(v int64)

Store is analagous to atomic.StoreInt64.

type AlignedAtomicUint64

type AlignedAtomicUint64 struct {
	// contains filtered or unexported fields
}

AlignedAtomicUint64 is an atomic uint64 that is guaranteed to be 64-bit aligned, even on 32-bit systems. On most architectures, it's just a regular uint64.

See aligned_unsafe.go in this directory for justification.

+stateify savable

func (*AlignedAtomicUint64) Add

func (aa *AlignedAtomicUint64) Add(v uint64) uint64

Add is analagous to atomic.AddUint64.

func (*AlignedAtomicUint64) Load

func (aa *AlignedAtomicUint64) Load() uint64

Load is analagous to atomic.LoadUint64.

func (*AlignedAtomicUint64) StateFields

func (aa *AlignedAtomicUint64) StateFields() []string

func (*AlignedAtomicUint64) StateLoad

func (aa *AlignedAtomicUint64) StateLoad(stateSourceObject state.Source)

+checklocksignore

func (*AlignedAtomicUint64) StateSave

func (aa *AlignedAtomicUint64) StateSave(stateSinkObject state.Sink)

+checklocksignore

func (*AlignedAtomicUint64) StateTypeName

func (aa *AlignedAtomicUint64) StateTypeName() string

func (*AlignedAtomicUint64) Store

func (aa *AlignedAtomicUint64) Store(v uint64)

Store is analagous to atomic.StoreUint64.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL