neicunchi/neicun.h

32 lines
676 B
C
Raw Permalink Normal View History

#ifndef THREAD_SAFE_MEMORY_POOL_H
#define THREAD_SAFE_MEMORY_POOL_H
#include <vector>
#include <mutex>
class ThreadSafeMemoryPool {
public:
// <20><><EFBFBD><EFBFBD><ECBAAF>
ThreadSafeMemoryPool(size_t blockSize, size_t blockCount);
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
void* allocate();
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
void deallocate(void* ptr);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
~ThreadSafeMemoryPool();
private:
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
void init();
size_t blockSize_; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
size_t blockCount_; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::vector<void*> freeBlocks_; // <20><><EFBFBD>п<EFBFBD><D0BF>б<EFBFBD>
std::vector<void*> allocatedBlocks_; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>б<EFBFBD>
std::mutex mutex_; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
#endif // THREAD_SAFE_MEMORY_POOL_H