mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-25 12:04:21 +01:00
core: Replace Mutex with RefCell in BufferPool
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user