1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-26 03:21:08 +00:00

optimize message pool release (#1871)

This commit is contained in:
fakeshadow 2021-01-04 21:03:46 +08:00 committed by GitHub
parent 7d632d0b7b
commit e567873326
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -67,7 +67,7 @@ impl Head for RequestHead {
fn clear(&mut self) {
self.flags = Flags::empty();
self.headers.clear();
self.extensions.borrow_mut().clear();
self.extensions.get_mut().clear();
}
fn pool() -> &'static MessagePool<Self> {
@ -440,9 +440,11 @@ impl<T: Head> MessagePool<T> {
#[inline]
fn get_message(&'static self) -> Message<T> {
if let Some(mut msg) = self.0.borrow_mut().pop() {
if let Some(r) = Rc::get_mut(&mut msg) {
r.clear();
}
// Message is put in pool only when it's the last copy.
// which means it's guaranteed to be unique when popped out.
Rc::get_mut(&mut msg)
.expect("Multiple copies exist")
.clear();
Message { head: msg }
} else {
Message {