mirror of
https://github.com/celisej567/mcpe.git
synced 2026-01-05 18:10:09 +03:00
* Initial commit.
:)
This commit is contained in:
52
thirdparty/raknet/LocklessTypes.cpp
vendored
Normal file
52
thirdparty/raknet/LocklessTypes.cpp
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
*/
|
||||
|
||||
#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__) || defined(__APPLE__)
|
||||
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__) || defined(__APPLE__)
|
||||
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