下面是一个专门用来处理libevent的线程的代码 (不好描述啊…但本人想大家应该懂得本人说的)
sometype * obj = nullptr; resource * res = nullptr; do { obj = new sometype; if (nullptr == obj) { break; } res = new resource; if (nullptr == res) { break; } event_base_dispatch(base); } while (false); delete sometype; delete resource;
我们知道程序会一直阻塞(不能叫阻塞,但暂且这么说吧)在event_base_dispatch(base);
windows调试时,在delete处断点,当程序退出时(本人只知道关闭程序或shift+F5来退出),但断点没跑过来
所以,本人想程序能否有执行这一句?
其实,就是想问一个问题,假如让此线程优雅的退出
本人想,可能要创建一个event(具体是什么事件没想出来),退出时,调用这个event的回调(回调中处理资源的释放问题),但退出时会触发一个什么事件呢,不清楚啊…
解决方案
50
event_loopbreak
20
不要企图优雅的结束(原因是这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!
而要在烂的不能再烂的摊子上也能重整河山!
5
额 造谣是会被抓的
10
本来就是一个线程的东西,怎样算是达到了优雅的效果呢?
55
看上去代码所在的线程应该是本人负责的没有人去控制,假如有控制的,可以把资源释放注册到控制者上面,
然后控制者去中止线程,然后做资源检测。假如没有控制的,可以注册到某个全局的东西上,例如某个对象的析构函数,不过这样的风险大,存在依赖问题。还或不用动态分配的资源,直接用静态的。至于断电,海啸的,尽人事,听天命吧。
然后控制者去中止线程,然后做资源检测。假如没有控制的,可以注册到某个全局的东西上,例如某个对象的析构函数,不过这样的风险大,存在依赖问题。还或不用动态分配的资源,直接用静态的。至于断电,海啸的,尽人事,听天命吧。
50
监听pipe管道, write 1字节唤醒退出, join回收线程。
10
你的线程这样写,表示在别的地方没有需要让她结束的要求。否则就会有 cancel 标识。
那么旧部需要考虑结束。
假如,整个进程被终结了,该线程无论怎么结束都是优雅的。
那么旧部需要考虑结束。
假如,整个进程被终结了,该线程无论怎么结束都是优雅的。