core: Replace Mutex with RefCell in BufferPool

This commit is contained in:
Pekka Enberg
2024-01-28 10:13:03 +02:00
parent 225ee98769
commit f2cd403944

View File

@@ -1,21 +1,22 @@
use crate::io::BufferData;
use std::{pin::Pin, sync::Mutex};
use std::pin::Pin;
use std::cell::RefCell;
pub struct BufferPool {
pub free_buffers: Mutex<Vec<BufferData>>,
pub free_buffers: RefCell<Vec<BufferData>>,
page_size: usize,
}
impl BufferPool {
pub fn new(page_size: usize) -> Self {
Self {
free_buffers: Mutex::new(Vec::new()),
free_buffers: RefCell::new(Vec::new()),
page_size,
}
}
pub fn get(&self) -> BufferData {
let mut free_buffers = self.free_buffers.lock().unwrap();
let mut free_buffers = self.free_buffers.borrow_mut();
if let Some(buffer) = free_buffers.pop() {
buffer
} else {
@@ -24,7 +25,7 @@ impl BufferPool {
}
pub fn put(&self, buffer: BufferData) {
let mut free_buffers = self.free_buffers.lock().unwrap();
let mut free_buffers = self.free_buffers.borrow_mut();
free_buffers.push(buffer);
}
}