From f2cd4039448dfd14fb7f388c915650d0698a4af4 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Sun, 28 Jan 2024 10:13:03 +0200 Subject: [PATCH] core: Replace Mutex with RefCell in BufferPool --- core/buffer_pool.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/buffer_pool.rs b/core/buffer_pool.rs index 9f3702604..d864c73c4 100644 --- a/core/buffer_pool.rs +++ b/core/buffer_pool.rs @@ -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>, + pub free_buffers: RefCell>, 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); } }