11 #ifndef _INCLUDE_SYNCEDINT_H_
12 #define _INCLUDE_SYNCEDINT_H_
14 #include <drift/Mutex.h>
33 value = (T *)_aligned_malloc(
sizeof(T), 64);
41 return InterlockedIncrement((LONG *)value);
42 #if (_WIN32_WINNT >= 0x0600)
43 }
else if (
sizeof(T) == 8) {
44 return InterlockedIncrement64((LONGLONG *)value);
46 #if (_WIN32_WINNT >= 0x0602)
47 }
else if (
sizeof(T) == 2) {
48 return InterlockedIncrement16((LONGLONG *)value);
51 printf(
"SyncedInt: Unsupported int size: %u\n",
sizeof(T));
57 return InterlockedDecrement((LONG *)value);
58 #if (_WIN32_WINNT >= 0x0600)
59 }
else if (
sizeof(T) == 8) {
60 return InterlockedDecrement64((LONGLONG *)value);
62 #if (_WIN32_WINNT >= 0x0602)
63 }
else if (
sizeof(T) == 2) {
64 return InterlockedDecrement16((LONGLONG *)value);
67 printf(
"SyncedInt: Unsupported int size: %u\n",
sizeof(T));
71 T Get() {
return *value; }
74 T __attribute__((aligned(64))) value;
80 return __sync_add_and_fetch(&value, 1);
83 return __sync_sub_and_fetch(&value, 1);
85 T Get() {
return value; }