mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-17 16:43:58 +00:00
Solution: as libzmq already provides this across all platforms, expose an atomic counter API. I've not wrapped atomic pointers, though someone who needs this may want to do so.
62 lines
1.5 KiB
Plaintext
62 lines
1.5 KiB
Plaintext
zmq_atomic_counter_dec(3)
|
|
=========================
|
|
|
|
|
|
NAME
|
|
----
|
|
zmq_atomic_counter_dec - decrement an atomic counter
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
*bool zmq_atomic_counter_dec (void *counter);*
|
|
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
The _zmq_atomic_counter_dec_ function decrements an atomic counter in
|
|
a threadsafe fashion. This function uses platform specific atomic
|
|
operations.
|
|
|
|
|
|
RETURN VALUE
|
|
------------
|
|
The _zmq_atomic_counter_dec()_ function returns true if the counter is
|
|
greater than zero after decrementing, or false if the counter reached
|
|
zero.
|
|
|
|
|
|
EXAMPLE
|
|
-------
|
|
.Test code for atomic counters
|
|
----
|
|
void *counter = zmq_atomic_counter_new ();
|
|
assert (zmq_atomic_counter_value (counter) == 0);
|
|
assert (zmq_atomic_counter_inc (counter) == 0);
|
|
assert (zmq_atomic_counter_inc (counter) == 1);
|
|
assert (zmq_atomic_counter_inc (counter) == 2);
|
|
assert (zmq_atomic_counter_value (counter) == 3);
|
|
assert (zmq_atomic_counter_dec (counter) == true);
|
|
assert (zmq_atomic_counter_dec (counter) == true);
|
|
assert (zmq_atomic_counter_dec (counter) == false);
|
|
zmq_atomic_counter_set (counter, 2);
|
|
assert (zmq_atomic_counter_dec (counter) == true);
|
|
assert (zmq_atomic_counter_dec (counter) == false);
|
|
zmq_atomic_counter_destroy (&counter);
|
|
----
|
|
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkzmq:zmq_atomic_counter_new[3]
|
|
linkzmq:zmq_atomic_counter_set[3]
|
|
linkzmq:zmq_atomic_counter_inc[3]
|
|
linkzmq:zmq_atomic_counter_value[3]
|
|
linkzmq:zmq_atomic_counter_destroy[3]
|
|
|
|
|
|
AUTHORS
|
|
-------
|
|
This page was written by the 0MQ community. To make a change please
|
|
read the 0MQ Contribution Policy at <http://www.zeromq.org/docs:contributing>.
|