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:
|
|||
|
// <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
|