Skip to content

【llbc】LLBC_Timer 极端异常兼容优化(易用性、安全性) #528

@lailongwei

Description

@lailongwei

优化点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类似

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions