CK_PR_ADD(3)
π ck_pr_add(3) β atomic addition operations π
okay bestie, so this is ck_pr_add(3), and it lives in the Concurrency Kit (that's libck, and you link it with -lck). It's a whole little family of functions that add stuff atomically, and honestly? it's giving "no data races, only vibes." β¨
πΈ SYNOPSIS πΈ
#include <ck_pr.h>
void
ck_pr_add_ptr(void *target, uintptr_t delta);
void
ck_pr_add_double(double *target, double delta);
void
ck_pr_add_char(char *target, char delta);
void
ck_pr_add_uint(unsigned int *target, unsigned int delta);
void
ck_pr_add_int(int *target, int delta);
void
ck_pr_add_64(uint64_t *target, uint64_t delta);
void
ck_pr_add_32(uint32_t *target, uint32_t delta);
void
ck_pr_add_16(uint16_t *target, uint16_t delta);
void
ck_pr_add_8(uint8_t *target, uint8_t delta);
π¦ DESCRIPTION π¦
so here's the tea π: the whole ck_pr_add(3) family does exactly one thing and does it flawlessly. It atomically adds the value you pass in delta to the value sitting at the address pointed to by target.
that's it. that's the whole job. no cap. π₯
"atomically" means nobody can catch it mid-add β other threads either see the old value or the new one, never some cursed in-between situation. main character energy, fr fr. π
π heads up: pick the right function for your type.ck_pr_add_8wants auint8_t,ck_pr_add_ptrwants avoid *and auintptr_tdelta, and so on β nine flavours, one for each type in the synopsis. Don't mix and match, bestie.
β RETURN VALUES β
ngl, this family of functions does not have a return value. It's void, periodt. π
It just does the thing and dips. β¨
π SEE ALSO π
like, go meet the whole friend group π«Ά:
ck_pr_fence_load(3)ck_pr_fence_load_depends(3)ck_pr_fence_store(3)ck_pr_fence_memory(3)ck_pr_load(3)ck_pr_store(3)ck_pr_fas(3)ck_pr_faa(3)ck_pr_inc(3)ck_pr_dec(3)ck_pr_neg(3)ck_pr_not(3)ck_pr_sub(3)ck_pr_and(3)ck_pr_or(3)ck_pr_xor(3)ck_pr_cas(3)ck_pr_btc(3)ck_pr_bts(3)ck_pr_btr(3)
and if you want even more lore, additional information is available at http://concurrencykit.org/ π§
that's the whole page, bestie β written by the Concurrency Kit girlies back on April 11, 2013, and yes she's still iconic. ck_pr_add(3), out. πβ¨
π¦ where this page comes from
- alpine 3.24: ck-doc 0.7.2-r1 Β· BSD-2-Clause AND Apache-2.0
- debian bookworm: libck-dev 0.7.1-10 Β· BSD-2-Clause
- debian trixie: libck-dev 0.7.2-6 Β· BSD-2-Clause
- epel 10: ck-devel 0.7.2-1.el10_1 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- epel 9: ck-devel 0.7.0-10.el9 Β· BSD
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- nixos 26.05: ck 0.7.2
- nixpkgs unstable: ck 0.7.2
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- ubuntu jammy: libck-dev 0.7.1-6ubuntu2 Β· BSD-2-Clause
- ubuntu noble: libck-dev 0.7.1-13build1 Β· BSD-2-Clause
- ubuntu questing: libck-dev 0.7.2-5ubuntu1
- ubuntu resolute: libck-dev 0.7.2-5ubuntu2 Β· BSD-2-Clause
- ubuntu stonking: libck-dev 0.7.2-11 Β· BSD-2-Clause
- Copyright 2013 Samy Al Bahra
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms