内存优化
This commit is contained in:
parent
780734e980
commit
0d1fd33446
@ -62,6 +62,39 @@ namespace f8
|
||||
work_thread_ = new std::thread(&HttpThread::WorkThreadProc, this);
|
||||
}
|
||||
|
||||
void UnInit()
|
||||
{
|
||||
terminated = true;
|
||||
loop_cond_->notify_all();
|
||||
work_thread_->join();
|
||||
delete work_thread_;
|
||||
work_thread_ = nullptr;
|
||||
loop_mutex_->lock();
|
||||
if (!work_node_) {
|
||||
work_node_ = top_node_;
|
||||
top_node_ = nullptr;
|
||||
bot_node_ = nullptr;
|
||||
}
|
||||
while (work_node_) {
|
||||
AsyncHttpNode* pdelnode = work_node_;
|
||||
work_node_ = work_node_->nextnode;
|
||||
if (!work_node_) {
|
||||
work_node_ = top_node_;
|
||||
top_node_ = nullptr;
|
||||
bot_node_ = nullptr;
|
||||
}
|
||||
delete pdelnode;
|
||||
}
|
||||
loop_mutex_->unlock();
|
||||
|
||||
delete loop_cond_;
|
||||
loop_cond_ = nullptr;
|
||||
delete loop_mutex_;
|
||||
loop_mutex_ = nullptr;
|
||||
delete msg_mutex_;
|
||||
msg_mutex_ = nullptr;
|
||||
}
|
||||
|
||||
void AddAsyncHttp(AsyncHttpNode* p)
|
||||
{
|
||||
std::unique_lock<std::mutex> lk(*loop_mutex_);
|
||||
@ -81,7 +114,7 @@ namespace f8
|
||||
|
||||
void WorkThreadProc()
|
||||
{
|
||||
while (true) {
|
||||
while (!terminated) {
|
||||
ProcessMsg();
|
||||
WaitLoopCond();
|
||||
}
|
||||
@ -189,6 +222,7 @@ namespace f8
|
||||
int exec_async_http_msgid = 0;
|
||||
|
||||
private:
|
||||
volatile bool terminated = false;
|
||||
std::mutex *loop_mutex_ = nullptr;
|
||||
std::condition_variable *loop_cond_ = nullptr;
|
||||
|
||||
@ -209,6 +243,16 @@ namespace f8
|
||||
exec_async_http_msgid = MsgQueue::Instance()->AllocIMMsgId();
|
||||
}
|
||||
|
||||
void UnInit()
|
||||
{
|
||||
for (auto& itr : http_thread_pool) {
|
||||
HttpThread* thread = itr;
|
||||
thread->UnInit();
|
||||
delete thread;
|
||||
}
|
||||
http_thread_pool.clear();
|
||||
}
|
||||
|
||||
void SetThreadNum(int thread_num)
|
||||
{
|
||||
assert(thread_num > 0);
|
||||
@ -334,6 +378,7 @@ namespace f8
|
||||
|
||||
void HttpClientPool::UnInit()
|
||||
{
|
||||
impl_->UnInit();
|
||||
delete impl_;
|
||||
impl_ = nullptr;
|
||||
}
|
||||
|
@ -22,6 +22,16 @@ namespace f8
|
||||
struct NetMsgHandlerObject
|
||||
{
|
||||
NetMsgHandler* handlers[MAX_MSG_ID] = { nullptr };
|
||||
|
||||
~NetMsgHandlerObject()
|
||||
{
|
||||
for (size_t i = 0; i < MAX_MSG_ID; ++i) {
|
||||
if (handlers[i]) {
|
||||
delete handlers[i];
|
||||
handlers[i] = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template<typename InstanceType, typename MsgType>
|
||||
|
@ -27,7 +27,7 @@ namespace f8
|
||||
bool is_poly_log = false;
|
||||
|
||||
std::thread* save_thread = nullptr;
|
||||
bool save_thread_shutdown = false;
|
||||
volatile bool save_thread_shutdown = false;
|
||||
|
||||
std::mutex msg_mutex;
|
||||
TGLogMsgNode* top_node = nullptr;
|
||||
@ -44,6 +44,9 @@ namespace f8
|
||||
|
||||
virtual ~TGLogImpl()
|
||||
{
|
||||
save_thread_shutdown = true;
|
||||
save_thread->join();
|
||||
delete save_thread;
|
||||
delete save_cond_mutex;
|
||||
save_cond_mutex = nullptr;
|
||||
delete save_cond;
|
||||
|
@ -209,6 +209,7 @@ namespace f8
|
||||
google::protobuf::Message* msg = prototype->New();
|
||||
JsonToMessage(*p, msg);
|
||||
push_back_func(msg);
|
||||
delete msg;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user