forked from Kolyah35/minecraft-pe-0.6.1
the whole game
This commit is contained in:
42
src/raknet/LocklessTypes.cpp
Executable file
42
src/raknet/LocklessTypes.cpp
Executable file
@@ -0,0 +1,42 @@
|
||||
#include "LocklessTypes.h"
|
||||
|
||||
using namespace RakNet;
|
||||
|
||||
LocklessUint32_t::LocklessUint32_t()
|
||||
{
|
||||
value=0;
|
||||
}
|
||||
LocklessUint32_t::LocklessUint32_t(uint32_t initial)
|
||||
{
|
||||
value=initial;
|
||||
}
|
||||
uint32_t LocklessUint32_t::Increment(void)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return (uint32_t) InterlockedIncrement(&value);
|
||||
#elif defined(ANDROID) || defined(__S3E__)
|
||||
uint32_t v;
|
||||
mutex.Lock();
|
||||
++value;
|
||||
v=value;
|
||||
mutex.Unlock();
|
||||
return v;
|
||||
#else
|
||||
return __sync_fetch_and_add (&value, (uint32_t) 1);
|
||||
#endif
|
||||
}
|
||||
uint32_t LocklessUint32_t::Decrement(void)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return (uint32_t) InterlockedDecrement(&value);
|
||||
#elif defined(ANDROID) || defined(__S3E__)
|
||||
uint32_t v;
|
||||
mutex.Lock();
|
||||
--value;
|
||||
v=value;
|
||||
mutex.Unlock();
|
||||
return v;
|
||||
#else
|
||||
return __sync_fetch_and_add (&value, (uint32_t) -1);
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user