summaryrefslogtreecommitdiff
path: root/source/libs/asura-lib-utils/io/data_buffer.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-27 22:18:14 +0800
committerchai <chaifix@163.com>2019-03-27 22:18:14 +0800
commit69f7d1bd745ed5680b9bc4e3cfdd882ff2a5ad26 (patch)
tree729e563da8fea6cf8c5455f3afdb3c6ce0aecde4 /source/libs/asura-lib-utils/io/data_buffer.cpp
parent66c5fdc564dd892ed265132d6c1378dbe3cebcee (diff)
+threading
Diffstat (limited to 'source/libs/asura-lib-utils/io/data_buffer.cpp')
-rw-r--r--source/libs/asura-lib-utils/io/data_buffer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/source/libs/asura-lib-utils/io/data_buffer.cpp b/source/libs/asura-lib-utils/io/data_buffer.cpp
index 3c0100b..000869d 100644
--- a/source/libs/asura-lib-utils/io/data_buffer.cpp
+++ b/source/libs/asura-lib-utils/io/data_buffer.cpp
@@ -2,6 +2,8 @@
#include <cstring>
#include "data_buffer.h"
+using namespace AEThreading;
+
namespace AsuraEngine
{
namespace IO
@@ -16,6 +18,7 @@ namespace AsuraEngine
: mSize(size)
, mBytes(nullptr)
{
+ lock(mMutex);
mBytes = new byte[size];
memset(mBytes, 0, size);
}
@@ -34,6 +37,7 @@ namespace AsuraEngine
void DataBuffer::Refactor(size_t size)
{
+ lock(mMutex);
if (!mBytes || mSize != size)
{
delete[] mBytes;
@@ -50,6 +54,7 @@ namespace AsuraEngine
size_t DataBuffer::Load(const void* data, std::size_t size)
{
+ lock(mMutex);
size_t len = mSize > size ? size : mSize;
memcpy(mBytes, data, len);
return len;
@@ -57,6 +62,7 @@ namespace AsuraEngine
void DataBuffer::Move(void* bytes, std::size_t size)
{
+ lock(mMutex);
if (!mBytes)
{
delete[] mBytes;
@@ -72,10 +78,11 @@ namespace AsuraEngine
void DataBuffer::Clear()
{
+ lock(mMutex);
if (mBytes)
memset(mBytes, 0, mSize);
}
-
+
std::size_t DataBuffer::GetSize()
{
return mSize;