-
Notifications
You must be signed in to change notification settings - Fork 952
Fix InvokeTimer::Cancel bug #151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
怎么单独起travis-ci? @zieckey |
这一段代码需要仔细推敲并进行周密的测试。现有项目中有很多单元测试就是为这个准备的。因为对象的生命周期很难管理。尤其是不知道上层应用如何调用的情况下。 |
现在的解决方式是陈硕所说的弱回调技术,这方面不存在生命周期的问题,但是我起travis似乎有问题…… |
调整了下代码格式,前面肯定是travis的问题,你们可以测试一下你们认为的场景,在我这边我所想到的场景是修复了的 @zieckey |
这段代码,原来的实现有什么问题?请给一个例子看看。谢谢。 |
可以看前一个pr, #141 调用InvokeTimer::Start后Start的逻辑被放到了任务队列,如果这时立刻执行Cancel,Cancel将失效,定时器仍然执行。所以Cancel的真实逻辑也应该封装一个任务放入loop。 InvokeTimer::OnCanceled由EventWatcher::Cancel在cancel_callback_();里调用,而OnCanceled的调用会销毁EventWatcher对象,接着再设置cancel_callback_会导致内存访问错误 |
我这边测试是没问题的,这个bug还是很明显的,也是必现的 |
还是请 @shgxwxl 来跟进看看吧 |
@feihongmeilian 提交的分支在资源管理上更清晰一些,我merge了,你再帮忙也仔细看看 @zieckey |
No description provided.