docs / stdlib / concurrent

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

AtomicInt32

cajeta.concurrent.AtomicInt32 — atomic 32-bit signed integer: a lock-free int32 cell that multiple threads can read, write, and update without tearing or data races. The class owns a heap-allocated cell that the compiler emits inline LLVM atomic instructions against. The plain methods (load, store, fetchAdd, compareAndSet) use sequentially consistent ordering; to opt into a weaker ordering, call the variant whose name encodes it — there is no ordering parameter. The 64-bit counterpart is AtomicInt64.

AtomicInt32 counter = heap AtomicInt32(0);
int32 prior = counter.fetchAdd(1);          // 0; cell now holds 1
boolean won = counter.compareAndSet(1, 2);  // true; cell now holds 2
int32 n = counter.load();                   // 2

Methods

Signature
AtomicInt32(int32 initial) ⚑Creates an atomic cell seeded with initial
int32 load()Atomic load (seq_cst)
void store(int32 v)Atomic store (seq_cst)
int32 fetchAdd(int32 delta)Atomic fetch-and-add; returns the prior value
boolean compareAndSet(int32 expected, int32 desired)Atomic compare-and-set
int32 loadRelaxed()Load with RELAXED ordering — atomic, no cross-thread synchronization
int32 loadAcquire()Load with ACQUIRE ordering — pairs with storeRelease
void storeRelaxed(int32 v)Store with RELAXED ordering — no release semantics
void storeRelease(int32 v)Store with RELEASE ordering — publishes prior writes to a paired loadAcquire
int32 fetchAddRelaxed(int32 delta)RELAXED fetch-and-add; returns the value held before the add
boolean compareAndSetAcquire(int32 expected, int32 desired)Compare-and-set with ACQUIRE ordering on success and failure

⚑ = @EntryPoint

See also

Source: docs/stdlib/concurrent/AtomicInt32.md · 1 min read · 239 words