CK_HT_GET_SPMC(3)

πŸ’– CK_HT_GET_SPMC β€” the manual, but make it cute πŸ’–

okay bestie, welcome to ck_ht_get_spmc(3), a page from the Concurrency Kit manual β€” that's libck, and you link it with -lck. she's a little lookup queen and she's about to find your key in a hash table, no cap. πŸ¦‹


✨ NAME ✨

ck_ht_get_spmc β€” load a key-value pair from a hash table 🌸


πŸ“š LIBRARY πŸ“š

Concurrency Kit, aka libck, and you link her with -lck. periodt. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

#include <ck_ht.h>

bool
ck_ht_get_spmc(ck_ht_t *ht, ck_ht_hash_t h, ck_ht_entry_t *entry);

🫢 DESCRIPTION 🫢

so basically, ck_ht_get_spmc() will return the value associated with the key specified in the entry argument, inside the hash table pointed to by the ht argument. and the key chillin' in entry? she's expected to have the hash value specified by the h argument. like, they gotta match, bestie. πŸ’–

now, this part matters, so listen up:

and for the hash:

  • it's expected that h was initialized with ck_ht_hash(3) if ht was created with CK_HT_MODE_BYTESTRING.
  • if ht was initialized with CK_HT_MODE_DIRECT, then it's expected that h was initialized with the ck_ht_hash_direct(3) function.

okay so what actually happens: if the call to ck_ht_get_spmc() was successful, then the key-value pair in entry was successfully found in the hash table pointed to by h β€” and it will fail if the key specified in entry does not exist in the hash table. if it's successful, entry will contain the key-value pair found in the hash table pointed to by the ht argument. iconic behavior honestly. πŸ‘‘

now how do you get your lil data back out? depends on the mode:

and the best part?? this function is safe to call in the presence of a concurrent writer. she's built different fr fr. πŸ”₯


⭐ RETURN VALUES ⭐

upon successful completion, ck_ht_get_spmc() returns true. and if it's successful, entry will contain the key/value pair as found in the hash table. πŸ’–

otherwise? the function returns false on failure. that's it, that's the whole vibe check. πŸ’€


πŸ’€ ERRORS πŸ’€

behavior is undefined if entry or ht are uninitialized. like, do not do that, bestie, that's the scary part. 😭

the function will return false if the key as specified in entry was not found in the hash table. (which is honestly the gentlest possible outcome here, so count your blessings πŸ™ˆ)


🌈 SEE ALSO 🌈

ck_ht_stat(3), ck_ht_init(3), ck_ht_destroy(3), ck_ht_hash(3), ck_ht_hash_direct(3), ck_ht_set_spmc(3), ck_ht_put_spmc(3), ck_ht_gc(3), ck_ht_grow_spmc(3), ck_ht_remove_spmc(3), ck_ht_reset_spmc(3), ck_ht_reset_size_spmc(3), ck_ht_count(3), ck_ht_entry_empty(3), ck_ht_entry_key_set(3), ck_ht_entry_key_set_direct(3), ck_ht_entry_key(3), ck_ht_entry_key_length(3), ck_ht_entry_value(3), ck_ht_entry_set(3), ck_ht_entry_set_direct(3), ck_ht_entry_key_direct(3), ck_ht_entry_value_direct(3), ck_ht_iterator_init(3), ck_ht_next(3)

additional info is available at http://concurrencykit.org/ 🧚


and that's the whole page, babe. this one's dated March 29, 2012, and it lives under CK_HT_GET_SPMC(3). go forth and look up your keys, you main character. πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from