diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-12-22 17:17:38 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-12-22 17:17:38 -0800 |
| commit | 4104962dfc897f51f0b6e7bfabd2e9766085400e (patch) | |
| tree | 3d404f920f0d29dbbc66e5b38a36eece66f6d38c /src/platform/windows/win_thread.c | |
| parent | 6055f936411ca832abbfcbddba23e1e638f77e26 (diff) | |
| download | nng-4104962dfc897f51f0b6e7bfabd2e9766085400e.tar.gz nng-4104962dfc897f51f0b6e7bfabd2e9766085400e.tar.bz2 nng-4104962dfc897f51f0b6e7bfabd2e9766085400e.zip | |
pollers: use atomic bit masking operations to eliminate lockss
This is done for kqueue and poll. Others coming soon.
Diffstat (limited to 'src/platform/windows/win_thread.c')
| -rw-r--r-- | src/platform/windows/win_thread.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/platform/windows/win_thread.c b/src/platform/windows/win_thread.c index 9e74056d..c76209c1 100644 --- a/src/platform/windows/win_thread.c +++ b/src/platform/windows/win_thread.c @@ -325,6 +325,18 @@ nni_atomic_init(nni_atomic_int *v) InterlockedExchange(&v->v, 0); } +int +nni_atomic_or(nni_atomic_int *v, int mask) +{ + return (InterlockedOr(&v->v, mask)); +} + +int +nni_atomic_and(nni_atomic_int *v, int mask) +{ + return (InterlockedAnd(&v->v, mask)); +} + void nni_atomic_inc(nni_atomic_int *v) { |
