[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [Libevent-users] mixing libevent and boost::asio
On Thu, Nov 20, 2014 at 01:27:14PM +0100, svante karlsson wrote:
> Thanks,
>
> First of all I made a typo in my own comments - the return parameter from
> boost::asio::poll is the number of handlers it did run (not one).
You are right.
I've just checked io_service.poll():
$ strace -eepoll_wait ./a.out
pre poll
epoll_wait(4, {{EPOLLIN, {u32=11063784, u64=11063784}}, {EPOLLIN, {u32=11063888, u64=11063888}}, {EPOLLIN, {u32=11063796, u64=11063796}}}, 128, 0) = 3
post poll
timeout=0 === no blocking.
> According to spec it runs handlers that are ready to run, without blocking
> and I'm pretty sure it does what it says (Not blocking)
>
> Second, it's a bit worrying (for me at least) that the libevent equivalent
> call does indeed block - Do you have any hints on when it's actually
> blocking?
> >(event_base_loop(_event_base, EVLOOP_NONBLOCK);
I was wrong, sorry, it will not block with EVLOOP_NONBLOCK.
>
> Third, I also agrees on "and personally I don't think that it is sane to
> use two event loops in one application", BUT either I rewrite an existing
> (proprietary) proxy based on asio or an existing db client library
> (aerospike db) based on libevent.
>
> I'm thinking I might get away with handling the server code from asio and
> make polling calls to libevent queue in asio callbacks on events - both
> timer and io related ones but I'm looking for a cleaner solution.
>
> I've done the same for a libcurl based client in the past and it was
> possible to get to the sockets before libcurl actually waited for io.
libcurl is something very different, it is not _aio_ library, but AFAIR it
allow to multiplexing stuff using custom event loop (i.e. you could get
internal fd), that's why you could do this using libcurl I suppose.
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users in the body.