#include <Windows.h>
#include <iostream>
#include <map>
#include <string>
#include <assert.h>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <time.h>
typedef int s32;
typedef unsigned int u32;
typedef char c8;
typedef long long s64;
typedef unsigned long long u64;
typedef void* LPVOID;
typedef unsigned char* LPBYTE;
class LockObject
{
public:
LockObject()
{
InitializeCriticalSection(&mLock);
}
~LockObject()
{
DeleteCriticalSection(&mLock);
}
void Lock()
{
EnterCriticalSection(&mLock);
}
void UnLock()
{
LeaveCriticalSection(&mLock);
}
bool TryLock()
{
return TryEnterCriticalSection(&mLock);
}
private:
LockObject(const LockObject &other)
{}
LockObject& operator = (const LockObject &other)
{}
private:
CRITICAL_SECTION mLock;
};
class ScopeLock
{
public:
ScopeLock(CRITICAL_SECTION &lock)
:mlock(lock)
{
EnterCriticalSection(&mlock);
}
ScopeLock(LockObject &lock)
:mlock( reinterpret_cast<CRITICAL_SECTION&>(lock) )
{
EnterCriticalSection(&mlock);
}
~ScopeLock()
{
LeaveCriticalSection(&mlock);
}
private:
ScopeLock( const ScopeLock &other)
:mlock(other.mlock)
{}
ScopeLock& operator = (const ScopeLock &other)
{}
private:
CRITICAL_SECTION &mlock;
};
typedef struct MemoryChunk
{
u64 mID;
LPVOID mpData;
u64 mDataSize;
u64 mUsedSize;
MemoryChunk *mpNext;
}* MemoryChunkPtr;
class MemoryPool
{
public:
MemoryPool( u64 InitMemoryBlockBytes, u64 MinMemoryBlockBytes, u64 MemoryChunkBytes )
:mMemoryChunkBytes( MemoryChunkBytes )
,mMinMemoryBlockBytes( MinMemoryBlockBytes )
{
mChunkIDPool =
mTotalMemoryPoolBytes =
C++实现多线程全局内存池(性能优化)
最新推荐文章于 2024-07-29 16:41:54 发布
本文介绍了使用C++实现一个多线程全局内存池的技术细节,通过优化内存分配和管理,提高程序运行效率。虽然结构与之前版本相似,但未提供具体注释。
摘要由CSDN通过智能技术生成