neicunchi/neicun.cpp
lls 1c61cb0b21 线程池
Signed-off-by: lls <staying_liu_1@163.com>
2025-03-07 11:13:53 +08:00

43 lines
1.1 KiB
C++

#include"neicun.h"
#include <iostream>
#include <new> // 包含 operator new 和 operator delete 的定义
// 构造函数
ThreadSafeMemoryPool::ThreadSafeMemoryPool(size_t blockSize, size_t blockCount)
: blockSize_(blockSize), blockCount_(blockCount) {
init();
}
// 分配内存
void* ThreadSafeMemoryPool::allocate() {
std::lock_guard<std::mutex> lock(mutex_);
if (freeBlocks_.empty()) {
std::cerr << "Memory pool exhausted!" << std::endl;
return nullptr;
}
void* block = freeBlocks_.back();
freeBlocks_.pop_back();
return block;
}
// 释放内存
void ThreadSafeMemoryPool::deallocate(void* ptr) {
std::lock_guard<std::mutex> lock(mutex_);
freeBlocks_.push_back(ptr);
}
// 析构函数
ThreadSafeMemoryPool::~ThreadSafeMemoryPool() {
for (void* block : allocatedBlocks_) {
::operator delete(block); // 使用全局的 operator delete 释放内存
}
}
// 初始化内存池
void ThreadSafeMemoryPool::init() {
for (size_t i = 0; i < blockCount_; ++i) {
void* block = ::operator new(blockSize_); // 使用全局的 operator new 分配内存
allocatedBlocks_.push_back(block);
freeBlocks_.push_back(block);
}
}