aboutsummaryrefslogtreecommitdiff
path: root/src/platform/posix/posix_atomic.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-29 00:58:33 -0500
committerGarrett D'Amore <garrett@damore.org>2024-12-07 14:51:36 -0800
commitf8a314ea075745c244172173391e44c146837b87 (patch)
tree902360ac40d421798190804d2baa5dfe9cad31f6 /src/platform/posix/posix_atomic.c
parent3dfa962c0d43a59d74c7798c65505082a5c69484 (diff)
downloadnng-f8a314ea075745c244172173391e44c146837b87.tar.gz
nng-f8a314ea075745c244172173391e44c146837b87.tar.bz2
nng-f8a314ea075745c244172173391e44c146837b87.zip
performance: reference counters can use relaxed order when incrementing
Diffstat (limited to 'src/platform/posix/posix_atomic.c')
-rw-r--r--src/platform/posix/posix_atomic.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/platform/posix/posix_atomic.c b/src/platform/posix/posix_atomic.c
index 60875845..69c2a2c1 100644
--- a/src/platform/posix/posix_atomic.c
+++ b/src/platform/posix/posix_atomic.c
@@ -105,7 +105,7 @@ nni_atomic_swap(nni_atomic_int *v, int i)
void
nni_atomic_inc(nni_atomic_int *v)
{
- atomic_fetch_add(&v->v, 1);
+ atomic_fetch_add_explicit(&v->v, 1, memory_order_relaxed);
}
void
@@ -117,7 +117,7 @@ nni_atomic_dec(nni_atomic_int *v)
int
nni_atomic_dec_nv(nni_atomic_int *v)
{
- return (atomic_fetch_sub(&v->v, 1) - 1);
+ return (atomic_fetch_sub_explicit(&v->v, 1, memory_order_acq_rel) - 1);
}
bool
@@ -319,10 +319,11 @@ nni_atomic_get(nni_atomic_int *v)
{
return (__atomic_load_n(&v->v, __ATOMIC_SEQ_CST));
}
+
void
nni_atomic_inc(nni_atomic_int *v)
{
- __atomic_add_fetch(&v->v, 1, __ATOMIC_SEQ_CST);
+ __atomic_add_fetch(&v->v, 1, __ATOMIC_RELAXED);
}
void