linyacool / WebServer

A C++ High Performance Web Server
MIT License
7.77k stars 2.1k forks source link

请教关于HttpData对象的析构问题 #75

Open wstang35 opened 4 years ago

wstang35 commented 4 years ago

在void HttpData::handleConn() 中,如果HttpData对象的error_ == true,会执行以下语句:

loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this()));

此时runInLoop会直接执行HttpData::handleClose(),那么执行完它之后HttpData对象会不会已经析构了?

因为发现HttpData::handleClose()之后已经没有对象再持有管理HttpData的智能指针了...如果析构的话此时还在HttpData::handleConn()中,会不会造成问题呢?

那么HttpData::handleConn() 中是不是应该用queueInLoop呢?

wstang35 commented 4 years ago

一般情况下是不是只有poller持有HttpData智能指针呢?

wstang35 commented 4 years ago

另外请教一下,如何关闭日志系统,因为我做压测的时候性能差的比较多,想看下是不是日志系统影响太大了?还是说虚拟机上会有影响

linyacool commented 4 years ago

”析构的话此时还在HttpData::handleConn()中“ 这句话是什么意思哈?

linyacool commented 4 years ago

另外请教一下,如何关闭日志系统,因为我做压测的时候性能差的比较多,想看下是不是日志系统影响太大了?还是说虚拟机上会有影响

日志是异步的,不太可能有啥影响的