它在主线程中工作,但在另一个线程中返回1,添加我也测试添加了一个timerevent,但是它也不起作用(在添加timerevent后event_base_dispatch有效,但是不能调用listenCallback)。 我的代码:
// test code
// struct event *ev;
// struct timeval tv;
// tv.tv_sec = 1000;
// tv.tv_usec = 0;
// ev = evtimer_new(m_pEventBase.get(),[](evutil_socket_t,short,void *pUserData){
// }, this);
// evtimer_add(ev, &tv);
auto pListener = std::shared_ptr<evconnlistener>(evconnlistener_new_bind(
m_pEventBase.get(),
&listenCallback,
this,
LEV_OPT_CLOSE_ON_FREE | LEV_OPT_THREADSAFE,
-1,
(sockaddr *)&stAddr,
sizeof(sockaddr_in)),
[](evconnlistener *pListener) { evconnlistener_free(pListener); });
m_pThread = std::make_shared<std::thread>([this]() {
int nCode = event_base_dispatch(m_pEventBase.get());
onLog("loop end:" + std::to_string(nCode));
});