NAME¶
ck_ht_put_spmc
—
store unique key-value pair into hash table
LIBRARY¶
Concurrency Kit (libck, -lck)
SYNOPSIS¶
#include
<ck_ht.h>
bool
ck_ht_put_spmc
(
ck_ht_t
*ht,
ck_ht_hash_t h,
ck_ht_entry_t
*entry);
DESCRIPTION¶
The
ck_ht_put_spmc
() function will store the
key-value pair specified in the
entry
argument in the hash table pointed to by the
ht argument. The key specified in
entry is expected to have the hash value
specified by the
h argument.
If
ht was created with CK_HT_MODE_BYTESTRING
then
entry must have been initialized with
the
ck_ht_entry_set(3) function. If
ht was created with CK_HT_MODE_DIRECT then
entry must have been initialized with the
ck_ht_entry_set_direct(3) function.
It is 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 is expected that
h was initialized
with the
ck_ht_hash_direct(3) function.
If the call to
ck_ht_put_spmc
() was
successful then the key-value pair in
entry
was successfully stored in the hash table pointed to by
ht and will fail if the key specified in
entry already exists with-in the hash table.
Replacement semantics are provided by the
ck_ht_set_spmc(3) function.
This function is safe to call in the presence of concurrent
ck_ht_get_spmc(3) operations.
RETURN VALUES¶
Upon successful completion
ck_ht_put_spmc
()
returns
true
and otherwise returns
false
on failure.
ERRORS¶
Behavior is undefined if
entry or
ht are uninitialized. The function will
return
false
if the hash table required to
be grown but failed while attempting to grow or if the key specified in
entry was already present in the hash table.
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_gc(3),
ck_ht_get_spmc(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 information available at
http://concurrencykit.org/