怎么让libevent的线程优雅的退出

如何让libevent的线程优雅的退出
下面是一个专门用来处理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的回调(回调中处理资源的释放问题),但退出时会触发一个什么事件呢,不清楚啊...

------解决方案--------------------
event_loopbreak
------解决方案--------------------
不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!

我就知道你会这么说... 怎么让libevent的线程优雅的退出

那你知不知道当你想让libevent的线程优雅地退出时,可能会停电、地震、海啸或者世界末日呢?怎么让libevent的线程优雅的退出

额 造谣是会被抓的
------解决方案--------------------
本来就是一个线程的东西,怎么样算是达到了优雅的效果呢?
------解决方案--------------------
看上去代码所在的线程应该是自己负责的没有人去控制,如果有控制的,可以把资源释放注册到控制者上面,
然后控制者去中止线程,然后做资源检测。如果没有控制的,可以注册到某个全局的东西上,比如某个对象的析构函数,不过这样的风险大,存在依赖问题。还或者不用动态分配的资源,直接用静态的。至于断电,海啸的,尽人事,听天命吧。
------解决方案--------------------
监听pipe管道, write 1字节唤醒退出, join回收线程。
------解决方案--------------------
你的线程这样写,表示在别的地方没有需要让她结束的要求。否则就会有 cancel 标识。
那么旧部需要考虑结束。
如果,整个进程被终结了,该线程无论怎么结束都是优雅的。