Abool
:bulb: Atomic Boolean library for cleaner Go code, optimized for performance yet simple to use.
Install / Use
/learn @tevino/AboolREADME
ABool :bulb:
Atomic Boolean package for Go, optimized for performance yet simple to use.
Designed for cleaner code.
Usage
import "github.com/tevino/abool/v2"
cond := abool.New() // default to false
cond.Set() // Sets to true
cond.IsSet() // Returns true
cond.UnSet() // Sets to false
cond.IsNotSet() // Returns true
cond.SetTo(any) // Sets to whatever you want
cond.SetToIf(old, new) // Sets to `new` only if the Boolean matches the `old`, returns whether succeeded
cond.Toggle() // Flip the value of `cond`, returns the value before flipping
// embedding
type Foo struct {
cond *abool.AtomicBool // always use pointer to avoid copy
}
Benchmark
go: v1.18.2
goos: darwin
goarch: amd64
cpu: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
# Read
BenchmarkMutexRead-12 100000000 10.24 ns/op
BenchmarkAtomicValueRead-12 1000000000 0.4690 ns/op
BenchmarkAtomicBoolRead-12 1000000000 0.2345 ns/op # <--- This package
# Write
BenchmarkMutexWrite-12 100000000 10.19 ns/op
BenchmarkAtomicValueWrite-12 164918696 7.235 ns/op
BenchmarkAtomicBoolWrite-12 278729533 4.341 ns/op # <--- This package
# CAS
BenchmarkMutexCAS-12 57333123 20.26 ns/op
BenchmarkAtomicBoolCAS-12 203575494 5.755 ns/op # <--- This package
# Toggle
BenchmarkAtomicBoolToggle-12 145249862 8.196 ns/op # <--- This package
Special thanks to contributors
- barryz
- Added the
Togglemethod
- Added the
- Lucas Rouckhout
- Implemented JSON Unmarshal and Marshal interface
- Sebastian Schicho
- Reported a regression with test case
- Hide the underlying
int - Reintroduced the
Togglemethod
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
350.1kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
