优化点1:Timeout Handler 中 delete 自身,不会 crash
当前:
LLBC_Timer *timer;
timer->SetTimeoutHandler([this](LLBC_Timer *timer) {
delete timer; // 存在 crash 风险,因为当前还在 timer.timeoutHandler_ LLBC_Delegate 对象中
此处可能继续访问 捕获对象,已经是野访问
this->Foo();
});
优化细节:支持内部 delete timer实现,让业务可在极端情况删除一个临时 timer,技术实现待确定,一个明确方案是将当前 timer 中的 delegate 放到 scheduler 中托管,类似 linux 进程托管
优化点2:TimeoutHandler/CancelHandler 内部 SetTimeoutHandler/SetCancelHandler
问题及优化实现同优化点1类似
优化点1:Timeout Handler 中 delete 自身,不会 crash
当前:
优化细节:支持内部 delete timer实现,让业务可在极端情况删除一个临时 timer,技术实现待确定,一个明确方案是将当前 timer 中的 delegate 放到 scheduler 中托管,类似 linux 进程托管
优化点2:TimeoutHandler/CancelHandler 内部 SetTimeoutHandler/SetCancelHandler
问题及优化实现同优化点1类似