有沒有會libev的同學?請教一下,我呼叫ev_io_stop為什么不能停止loop?急,在線等!
future<int32> udpRet;
struct ev_loop *udpLoop;
ev_io udpWatcher;
string ip = "127.0.0.1";
int32 port = 1234;
int32 init_udp_socket(const int8* bindaddr, int32 port)
{
……
}
static void accept_cb_udp(struct ev_loop *loop, ev_io *watcher, int32 revents)
{
……
}
//udp
int32 create_udp()
{
int32 sock = init_udp_socket(ip.data(), port);
if (sock < 0)
{
loge("init socket failed: " << strerror(errno));
return -1;
}
else
{
udpLoop = ev_loop_new(EVBACKEND_EPOLL);
ev_io_init(&udpWatcher, accept_cb_udp, sock, EV_READ);
ev_io_start(udpLoop, &udpWatcher);
ev_loop(udpLoop, 0);
close(sock);
ev_loop_destroy(udpLoop);
}
return 0;
}
int32 main()
{
udpRet = async(launch::async, create_udp);
sleep(1);
ev_io_stop(udpLoop, &udpWatcher);
if (udpRet.valid())
{
udpRet.get();
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/52297.html
標籤:應用程序開發區
上一篇:求大神支招
