CK_PR_FAS(3)

✨ CK_PR_FAS(3) ✨

okay bestie, pull up a chair, because we're about to talk about ck_pr_fas(3) β€” the atomic swap girlies of the Concurrency Kit world πŸ’…


🌸 NAME 🌸

ck_pr_fas_ptr, ck_pr_fas_double, ck_pr_fas_char, ck_pr_fas_uint, ck_pr_fas_int, ck_pr_fas_64, ck_pr_fas_32, ck_pr_fas_16, ck_pr_fas_8 β€” atomic swap operations πŸ”₯

like, that's the whole squad. nine little icons, one shared destiny.


πŸŽ€ LIBRARY πŸŽ€

Concurrency Kit (that's libck, and you link it with -lck) 🫢


✨ SYNOPSIS ✨

no cap, here's the receipts:

#include <ck_pr.h>

void *
ck_pr_fas_ptr(void *target, void *new_value);

double
ck_pr_fas_double(double *target, double new_value);

char
ck_pr_fas_char(char *target, char new_value);

unsigned int
ck_pr_fas_uint(unsigned int *target, unsigned int new_value);

int
ck_pr_fas_int(int *target, int new_value);

uint64_t
ck_pr_fas_64(uint64_t *target, uint64_t new_value);

uint32_t
ck_pr_fas_32(uint32_t *target, uint32_t new_value);

uint16_t
ck_pr_fas_16(uint16_t *target, uint16_t new_value);

uint8_t
ck_pr_fas_8(uint8_t *target, uint8_t new_value);

nine flavors, one vibe check. pick the one that matches your type and go πŸ¦‹


πŸ’– DESCRIPTION πŸ’–

so the ck_pr_fas(3) family of functions atomically fetches the value pointed to by target and then replaces the value pointed to by target with the value you specified in new_value.

that's it. that's the whole thing. it's giving "grab the old one, drop the new one, all in one uninterruptible moment" 😭✨

the way that "atomically" is doing all the heavy lifting here β€” no other thread is gonna catch it mid-swap. it's one clean motion, like a hair flip that never gets caught on camera.


πŸ‘‘ RETURN VALUES πŸ‘‘

this function hands you back the value that was pointed to by target at the time the operation was invoked β€” i.e. the old value, the one from before it got atomically replaced with new_value. πŸ“

so like, you get the ex. the new one is already in place. periodt.


🌈 SEE ALSO 🌈

the whole friend group, go say hi:

more lore available at http://concurrencykit.org/ 🧚


okay that's the whole page bestie, we ate and left no crumbs πŸ’œ this was ck_pr_fas(3), dated April 7, 2013 β€” yeah it's an elder but she still slays. mwah, go write something lock-free πŸŽ€β­

πŸ“¦ where this page comes from