diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-11-29 00:58:33 -0500 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-12-07 14:51:36 -0800 |
| commit | f8a314ea075745c244172173391e44c146837b87 (patch) | |
| tree | 902360ac40d421798190804d2baa5dfe9cad31f6 /src/platform/posix/posix_atomic.c | |
| parent | 3dfa962c0d43a59d74c7798c65505082a5c69484 (diff) | |
| download | nng-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.c | 7 |
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 |
