From 382b4cff3abd5ccb282ba420ef1f7c7d171ec91a Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 4 Jan 2020 10:24:05 -0800 Subject: fixes #1105 pollable can be inlined, and use atomics This also introduces an nni_atomic_cas64 to help with lock-free designs. Some mechanical renaming was done in some of the protocols for spelling. --- src/platform/windows/win_thread.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/platform/windows/win_thread.c') diff --git a/src/platform/windows/win_thread.c b/src/platform/windows/win_thread.c index 70ba73cb..0b77e078 100644 --- a/src/platform/windows/win_thread.c +++ b/src/platform/windows/win_thread.c @@ -213,6 +213,14 @@ nni_atomic_dec64_nv(nni_atomic_u64 *v) #endif } +bool +nni_atomic_cas64(nni_atomic_u64 *v, uint64_t comp, uint64_t new) +{ + uint64_t old; + old = InterlockedCompareExchange64(&v->v, (LONG64)new, (LONG64)comp); + return (old == comp); +} + static unsigned int __stdcall nni_plat_thr_main(void *arg) { nni_plat_thr *thr = arg; -- cgit v1.2.3-70-g09d2