32 lines
676 B
C++
32 lines
676 B
C++
#ifndef THREAD_SAFE_MEMORY_POOL_H
|
|
#define THREAD_SAFE_MEMORY_POOL_H
|
|
|
|
#include <vector>
|
|
#include <mutex>
|
|
|
|
class ThreadSafeMemoryPool {
|
|
public:
|
|
// 构造函数
|
|
ThreadSafeMemoryPool(size_t blockSize, size_t blockCount);
|
|
|
|
// 分配内存
|
|
void* allocate();
|
|
|
|
// 释放内存
|
|
void deallocate(void* ptr);
|
|
|
|
// 析构函数
|
|
~ThreadSafeMemoryPool();
|
|
|
|
private:
|
|
// 初始化内存池
|
|
void init();
|
|
|
|
size_t blockSize_; // 每个块的大小
|
|
size_t blockCount_; // 块的数量
|
|
std::vector<void*> freeBlocks_; // 空闲块列表
|
|
std::vector<void*> allocatedBlocks_; // 已分配的块列表
|
|
std::mutex mutex_; // 互斥锁
|
|
};
|
|
|
|
#endif // THREAD_SAFE_MEMORY_POOL_H
|